闭包
定义
- 官方:是由函数和其相关的引用环境组合而成的实体
闭包和变量逃逸
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
func incr() func() int { var x int return func() int { x++ return x } } func main() { i := incr() println(i()) // 1 println(i()) // 2 println(i()) // 3 }
i就是一个闭包,i中有一个指针指向x
- x离开了作用域还存在,也是逃逸了
闭包引用
1 2 3 4 5
x := 1 func() { println(&x) // 0xc0000de790 }() println(&x) // 0xc0000de790
- 闭包内对外层变量是引用
循环中闭包引用
闭包延时绑定
This post is licensed under CC BY 4.0 by the author.