闭包
函数是头等对象,可以做参数传递,可以做函数返回值,也可以绑定到变量。这样的参数、返回值或变量为 function value
。
function value 本质上是一个指针,不直接指向函数指令入口,而是指向一个 runtime.funcval
结构体。
type funcval struct {
fn uintptr // 函数指令的入口地址
}
func create() func() int {
c := 2 // c 是闭包的捕获变量
return func() int {
return c
}
}
func main() {
f1 := create()
f2 := create()
fmt.Println(f1())
fmt.Println(f1())
}
闭包导致的局部变量堆分配 1
最后更新于