天天看點

Go中的閉包

閉包是很多語言必備的功能了,golang也不例外。

先看下面的這個例子:

Go中的閉包
Go中的閉包

運作傳回結果:

Go中的閉包
Go中的閉包

這個就是go中的閉包,一個函數和與其相關的引用環境組合而成的實體。

個人了解: 

其實了解閉包的最友善的方法就是将閉包函數看成一個類,一個閉包函數調用就是執行個體化一個類。

然後就可以根據類的角度看出哪些是“全局變量”,哪些是“局部變量”了。

比如上例中的adder函數傳回func(int) int 的函數

pos和neg分别執行個體化了兩個“閉包類”,在這個“閉包類”中有個“閉包全局變量”sum。是以這樣就很好了解傳回的結果了。