defer
语句。
在循环中使用 defer
会导致资源泄漏或语句的执行顺序不可预测。
示例:
func main() {
for {
field, err := db.Query("SELECT 1")
if err != nil {
// ...
}
defer field.Close()
// ...
}
}
defer row.Close()
在循环内的调用在函数完成执行之前不会执行。
而不是在 for
循环的每一步结束时。 这种实现可能会导致函数堆栈溢出和其他问题。