什么是闭包函数

什么是闭包

通过引用变量从而阻止该变量被垃圾回收的机制

闭包的用途

闭包可以用在许多地方。它的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中,不会在f1调用后被自动清除。

我的理解,把父函数看成object,闭包就是他的公用方法(public method),可以访问父函数的变量,并且保存对变量的引用,保证不背gc掉。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func getSequence() func() int {
i := 0
return func() int {
i++
return i
}
}
func main() {
/* nextNumber 为一个函数,函数 i 为 0 */
nextNumber := getSequence()

/* 调用 nextNumber 函数,i 变量自增 1 并返回 */
fmt.Println(nextNumber())
fmt.Println(nextNumber())
}

匿名函数 在这里做了闭包 ,同时保证了对父函数 i 的拥有。在main函数中创建了 闭包函数,所以延长了i的生命时间。

坚持原创技术分享,您的支持将鼓励我继续创作!