在 Go 中,闭包(closure)是一个“绑定”了外部变量的函数。简单来说,闭包可以在定义它的函数外部继续访问并修改这些变量。
package main
import "fmt"
func main() {
add := createAdder() // 创建一个闭包
fmt.Println(add(1)) // 输出: 1
fmt.Println(add(5)) // 输出: 6
fmt.Println(add(3)) // 输出: 9
}
func createAdder() func(int) int {
sum := 0
return func(x int) int { // 闭包函数
sum += x // 修改外部变量sum
return sum
}
}
解释
createAdder函数返回一个闭包函数func(int) int,这个闭包函数可以访问createAdder中的sum变量。add := createAdder(),调用createAdder时,sum被初始化为0,并返回闭包函数。- 每次调用
add(x),闭包都会对sum进行累加,并返回累加后的结果。
运行结果
1
6
9
总结
闭包可以记住外部变量的状态并在后续的调用中继续操作,这在编写一些需要状态的函数或工厂函数时非常有用。

1923

被折叠的 条评论
为什么被折叠?



