闭包是很多语言必备的功能了,golang也不例外。
先看下面的这个例子:


运行返回结果:


这个就是go中的闭包,一个函数和与其相关的引用环境组合而成的实体。
个人理解:
其实理解闭包的最方便的方法就是将闭包函数看成一个类,一个闭包函数调用就是实例化一个类。
然后就可以根据类的角度看出哪些是“全局变量”,哪些是“局部变量”了。
比如上例中的adder函数返回func(int) int 的函数
pos和neg分别实例化了两个“闭包类”,在这个“闭包类”中有个“闭包全局变量”sum。所以这样就很好理解返回的结果了。