Golang 第五章 6.匿名函数
匿名函数是 没有名字的函数,可以直接赋值给变量或立即调用。
在 Go 中,匿名函数经常用于:
闭包
临时函数
高阶函数
基本用法:赋值给变量
f := func(x, y int) int {
return x + y
}
fmt.Println(f(3, 4)) // 7f 是一个函数类型的变量
可以像普通函数一样调用
立即调用(Immediately Invoked Function Expression, IIFE)
result := func(x, y int) int {
return x + y
}(3, 4)
fmt.Println(result) // 7匿名函数定义后 立即被调用
常用于初始化复杂变量
闭包示例
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}
posSum := adder()
fmt.Println(posSum(1)) // 1
fmt.Println(posSum(2)) // 3
fmt.Println(posSum(3)) // 6内部匿名函数访问外部变量 sum
状态被保存 → 闭包特性
匿名函数作为参数
func compute(f func(int) int, x int) int {
return f(x)
}
result := compute(func(n int) int { return n * n }, 5)
fmt.Println(result) // 25可以直接在调用时定义函数
减少临时函数命名
匿名函数返回值
func makeMultiplier(factor int) func(int) int {
return func(x int) int {
return x * factor
}
}
double := makeMultiplier(2)
triple := makeMultiplier(3)
fmt.Println(double(5)) // 10
fmt.Println(triple(5)) // 15返回的函数保留了外部变量 factor
每个闭包有独立的环境
常用场景
闭包累加器或状态管理
高阶函数(函数作为参数或返回值)
临时函数(无需命名)
立即初始化变量



评论