go闭包

知道js闭包的肯定能非常快速的了解go的闭包,非常类似

闭包的概念:是在其语法上下文中引用了自由变量的函数(太官方)

先解释下作用域:每个变量都有自己的作用域,如果找不到需要的变量则会继续向上查,直到找到为止,遇到的问题就是内部的能访问外包的变量,但是外层无法访问内层的变量,如何能实现外层访问内层的变量,则就是闭包。

package main

import (
	"fmt"
)

func main() {
	f := test(20)
	f()
}

func test(x int) func() {
	fmt.Println(x)

	return func() {
		fmt.Println(x)
	}
}

 实现原理:闭包引用了原环境变量的指针(可以不理解)

猜你喜欢

转载自blog.csdn.net/weixin_39579606/article/details/83510271