閉包是很多語言必備的功能了,golang也不例外。
先看下面的這個例子:


運作傳回結果:


這個就是go中的閉包,一個函數和與其相關的引用環境組合而成的實體。
個人了解:
其實了解閉包的最友善的方法就是将閉包函數看成一個類,一個閉包函數調用就是執行個體化一個類。
然後就可以根據類的角度看出哪些是“全局變量”,哪些是“局部變量”了。
比如上例中的adder函數傳回func(int) int 的函數
pos和neg分别執行個體化了兩個“閉包類”,在這個“閉包類”中有個“閉包全局變量”sum。是以這樣就很好了解傳回的結果了。