defer
package main
import "fmt"
func main() {
var whatever [5]struct{}
fmt.Println(whatever)
for i := range whatever {
fmt.Println(i)
}
}
/*
[{} {} {} {} {}]
0
1
2
3
4
*/
defer 碰上闭包
defer f.Close
多个 defer 注册,按 FILO 次序执行 ( 先进后出 )。
延迟调用参数在注册时求值或复制,可用指针或闭包 "延迟" 读取。
滥用 defer 可能会导致性能问题,尤其是在一个 "大循环" 里。
defer陷阱
defer 与 closure
defer 与 return
defer nil 函数
在错误的位置使用 defer
解决方案
不检查错误
改进一下
再改进一下
释放不同的资源
解决方案
Last updated