主题
匿名函数与闭包
匿名函数没有名字,可以直接定义和调用,也可以作为变量或参数传递。闭包是匿名函数捕获并持有外部变量的特性。
1. 匿名函数定义与调用
go
func() {
fmt.Println("Hello, 匿名函数")
}()
将匿名函数赋值给变量:
go
f := func(name string) {
fmt.Println("Hello,", name)
}
f("Go")
2. 闭包示例
闭包可以访问和修改外部变量:
go
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}
pos := adder()
fmt.Println(pos(1)) // 输出:1
fmt.Println(pos(2)) // 输出:3
fmt.Println(pos(3)) // 输出:6
每次调用闭包都会累积 sum
,体现了状态的保持。
匿名函数和闭包是 Go 函数式编程的重要工具,提升代码灵活性和表达力。