go闭包

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
}
原文地址:https://www.cnblogs.com/HachikoT/p/14058414.html