匿名函数与闭包

匿名函数没有名字,可以直接定义和调用,也可以作为变量或参数传递。闭包是匿名函数捕获并持有外部变量的特性。

1. 匿名函数定义与调用

func() {
    fmt.Println("Hello, 匿名函数")
}()

`

将匿名函数赋值给变量:

f := func(name string) {
    fmt.Println("Hello,", name)
}
f("Go")

2. 闭包示例

闭包可以访问和修改外部变量:

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 函数式编程的重要工具,提升代码灵活性和表达力。