3-18 延迟调用的使用和性能损耗
18 延迟调用(defer)执行机制和时机
还有一点所谓延迟调用的问题,我们知道返回一个匿名函数只是返回一个包装,但是并没有调用这个函数,这就存在延迟调用问题。
func closure() []func() {
//动态切片当做数组
var fs []func()
for i := 0; i < 10; i++ {
//添加10个匿名函数
fs = append(fs, func() {
fmt.Printf("%p: %v\n", &i, i)
})
}
return fs
}
func closureFix() []func() {
var fs []func()
for i := 0; i < 10; i++ {
x := i
fs = append(fs, func() {
fmt.Printf