逃逸的一种情况
来源:9-3 GO 的堆内存结构是怎样的?(1)

慕仔9573397
2022-08-10
func adder() func(int) int {
num := 0
return func(n int) int {
num += n
return num
}
}
func main() {
incr := adder()
fmt.Println(incr(1))
fmt.Println(incr(1))
}
// 输出:
// 1
// 2
请问老师这种闭包的情况产生的逃逸属于哪种类型的逃逸呢?
写回答
1回答
-
简单来说就是因为返回了指针,这里的incr在代码里是一个函数,实际编译时其实是一个结构体的指针。本身这是一个语法糖。具体可以看下面这个文章。
https://zhuanlan.zhihu.com/p/360939266
00
相似问题