天天看点

Go中的闭包

闭包是很多语言必备的功能了,golang也不例外。

先看下面的这个例子:

Go中的闭包
Go中的闭包

运行返回结果:

Go中的闭包
Go中的闭包

这个就是go中的闭包,一个函数和与其相关的引用环境组合而成的实体。

个人理解: 

其实理解闭包的最方便的方法就是将闭包函数看成一个类,一个闭包函数调用就是实例化一个类。

然后就可以根据类的角度看出哪些是“全局变量”,哪些是“局部变量”了。

比如上例中的adder函数返回func(int) int 的函数

pos和neg分别实例化了两个“闭包类”,在这个“闭包类”中有个“闭包全局变量”sum。所以这样就很好理解返回的结果了。