package main
import "fmt"
func AddUpper()func(int)int{ //闭包:
var n int = 10 //准确的讲闭包返回的是一个匿名函数,返回的匿名函数引用到了函数外的参数,因此这个函数以及外部引用的参数形成了一个闭包
var str = "hello"
return func(x int) int{
n = n + x
str += string(36)
fmt.Println("str = ", str)
return n
}
}
func main(){
f := AddUpper()
fmt.Println(f(1))
fmt.Println(f(2))
fmt.Println(f(3))
}
闭包其实就是返回的匿名函数和匿名函数外的变量组合在一起就形成了闭包.