defer 문을 보고합니다.
루프에 사용된 defer 문은 리소스 누수 또는 예측할 수 없는 구문 실행 순서로 이어질 수 있습니다.
예:
func main() {
for {
field, err := db.Query("SELECT 1")
if err != nil {
// ...
}
defer field.Close()
// ...
}
}
루프 내부의 defer row.Close() 호출은 함수가 실행을 마치기 전까지 실행되지 않습니다.
for 루프의 각 단계의 마지막에서 실행되는 것이 아닙니다. 이러한 구현은 함수 스택 오버플로 또는 다른 문제로 이어질 수 있습니다.