在 Golang 中,可以通过函数字面量创建匿名函数,并将其赋值给变量。以下是具体实现方法及示例:
核心步骤- 定义匿名函数:使用 func(参数) 返回值类型 { 函数体 } 语法。
- 赋值给变量:直接将匿名函数赋值给变量(变量类型需匹配函数签名)。
代码示例package mainimport "fmt"func main() { // 1. 将匿名函数赋值给变量 add := func(a, b int) int { return a + b } // 2. 调用该函数 sum := add(3, 4) fmt.Println("加法结果:", sum) // 输出: 加法结果: 7 // 3. 动态定义并调用(立即执行) func(msg string) { fmt.Println("匿名函数输出:", msg) }("Hello, Golang!") // 输出: 匿名函数输出: Hello, Golang!}关键点说明- 变量类型推断:若变量已声明类型(如 var add func(int, int) int),可简写为 add = func(...) { ... }。
- 函数签名匹配:变量类型必须与匿名函数的参数和返回值类型完全一致。
- 立即执行:匿名函数可在定义后直接通过 (参数) 调用(如示例3)。
进阶用法// 返回匿名函数的函数func getMultiplier(factor int) func(int) int { return func(x int) int { return x * factor }}func main() { double := getMultiplier(2) fmt.Println(double(5)) // 输出: 10}注意事项- 匿名函数可访问外部作用域的变量(闭包特性)。
- 避免在循环中用循环变量创建闭包(需通过参数传递值)。
通过以上方法,可以灵活地将匿名函数赋值给变量,实现高阶函数、回调等模式。