Golang 第五章 6.匿名函数

  • By v2ray节点

  • 2026-03-26 16:48:38

  • 评论

匿名函数是 没有名字的函数,可以直接赋值给变量或立即调用。

在 Go 中,匿名函数经常用于:

闭包
临时函数
高阶函数



基本用法:赋值给变量

f := func(x, y int) int {
    return x + y
}
fmt.Println(f(3, 4)) // 7

f 是一个函数类型的变量
可以像普通函数一样调用



立即调用(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

每个闭包有独立的环境



常用场景

闭包累加器或状态管理

高阶函数(函数作为参数或返回值)
临时函数(无需命名)
立即初始化变量

v2ray节点购买