go闭包
闭包是什么?wiki中说:闭包是由函数和与其相关的引用环境组合而成的实体 。感觉比较抽象,其实各个语言中对闭包中实现的细节不一样,但原理上都是一个函数对象,引用了当前的执行上下文中的变量。和C++中通过lambda语法来手动捕获当前执行上下文中的变量不同,go语言是自动捕获当前函数中的变量,比如:
package main
import (
"fmt"
)
func main() {
n := 10
f := func() int {
n++
return n
}
fmt.Println(f()) // 11
fmt.Println(f()) // 12
fmt.Println(n) // 12
}