一、什么是闭包
特征: - 函数内部包含匿名子函数,子函数以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/】