go 闭包

看程序

package main

import "fmt"

func main() {
	f:=test2()
	fmt.Println(f())
	fmt.Println(f())
}

func test2() func() int {
	a := 10
	return func() int {
		a++
		return a
	}
}

结果为:

11
12

这个就是闭包,格式为有一个函数,函数的返回值为函数类型,并且在闭包这个函数里面有一个匿名函数,在匿名函数外面一定要有一个变量,这个变量需要在匿名函数中使用,这样做的目的就是多次调用时,外面这个变量都不会被清除,会一直变化,直到不再调用这个闭包为止

原文地址:https://www.cnblogs.com/lilyjia/p/9946507.html