一、什么是闭包
特征:
- 函数内部包含匿名子函数,子函数以return返回
- 子函数可以访问函数内部的局部变量
- 被子函数持有的局部变量不回被销毁
二、闭包的作用
优点
- 访问函数的私有变量
- 外部函数为全局函数的情况下,保证内部私有变量不被回收
类似类的封装,数据为私有变量,操作为return的匿名函数
缺点
- 内存占用,无法回收
三、示例
package main
import "fmt"
func intSeq() func() int {
i := 0
return func() int {
i++
return i
}
}
func main() {
nextInt := intSeq()
fmt.Println(nextInt())
fmt.Println(nextInt())
fmt.Println(nextInt())
newInts := intSeq()
fmt.Println(newInts())
}
四、参考文章
【https://www.golangprograms.com/closures-functions-in-golang.html】
【https://gobyexample.com/closures】
【https://omarkhawaja.com/understanding-function-closures-in-golang/】