Golang中的闭包
一、全局变量和局部变量的特点
1.全局变量:定义在全局中,常驻内存,可能会污染全局。
2.局部变量:定义在方法中,不常驻内存,不污染全局。
3.闭包的作用:使变量常驻内存且不污染全局。
二、闭包
1.闭包是指:有权访问另一个函数作用域中的变量的函数。
2.创建方法:在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量。
3.如:
func adder() func(x int) int {
var i = 10
return func(x int) int {
i += x
return i
}
}
函数里边嵌套一个函数,返回里边的函数就形成了闭包。
此时定义变量:var fn = adder(),调用三次fn(10)后,其输出结果分别为20、30、40。因为变量i常驻内存,每一次调用都会修改i的值,使其加x。