defer ステートメントを報告します。
ループ内で defer を使用すると、リソースがリークしたり、ステートメントが予期しない順序で実行されたりする場合があります。
例:
func main() {
for {
field, err := db.Query("SELECT 1")
if err != nil {
// ...
}
defer field.Close()
// ...
}
}
ループ内にある defer row.Close() の呼び出しは、関数の実行が完了するまで実行されません。
for ループの各ステップの最後では実行されません。 このような実装は、関数スタックのオーバーフローや別の問題を引き起こす可能性があります。