closure
Contents
what: 函数与外部变量关闭起来,使得外部变量在作用域结束后继续存活。
|
|
pros:
- a function can remember some satate between calls
vs anonymous function:
- anonymous func: have no name
- closure: 在go, closure 都是以anonymous的形式存在,
how: create a closure struct
|
|
why varaible keep when function return: 和 closure 一起逃逸到heap 上
explain why
|
|
case1: 未知
- i 同时被 10个闭包引用,闭包执行时机不确定,可能在for 循环中,可能在for 循环中,结果不可预测
- 如果是 signle cpu, go 在 for循环后才被执行, 输出是10
case 2: 乱序输出 (0,9)
- 闭包 引用是本地变量i,每个闭包看到的值是不一样