Golang匿名函数
侧边栏壁纸
  • 累计撰写 11 篇文章
  • 累计收到 1 条评论

Golang匿名函数

tqtqtq
2026-02-04 / 0 评论 / 3 阅读 / 正在检测是否收录...

Golang匿名函数

什么是匿名函数

匿名函数就是没有名字的函数,也称为函数字面量(function literal)。它可以在代码中直接定义和使用,无需事先声明函数名。

基本语法

func(参数列表) 返回值类型 {
    函数体
}

使用方法

1.定义后立即调用

package main

import "fmt"

func main() {
    // 定义并立即执行
    func() {
        fmt.Println("这是一个匿名函数")
    }()
    
    // 带参数和返回值
    result := func(a, b int) int {
        return a + b
    }(3, 5)
    
    fmt.Println("结果:", result) // 输出: 结果: 8
}

2.赋值给变量

package main

import "fmt"

func main() {
    // 将匿名函数赋值给变量
    add := func(a, b int) int {
        return a + b
    }
    
    // 通过变量调用
    fmt.Println(add(10, 20)) // 输出: 30
    
    // 变量可以重新赋值
    add = func(a, b int) int {
        return a * b
    }
    fmt.Println(add(10, 20)) // 输出: 200
}

3.作为函数参数

package main

import "fmt"

// 接收函数作为参数
func operate(a, b int, op func(int, int) int) int {
    return op(a, b)
}

func main() {
    // 传入匿名函数
    result := operate(10, 5, func(x, y int) int {
        return x - y
    })
    
    fmt.Println("结果:", result) // 输出: 结果: 5
}

4.作为返回值

package main

import "fmt"

// 返回一个函数
func getOperator(op string) func(int, int) int {
    switch op {
    case "+":
        return func(a, b int) int {
            return a + b
        }
    case "*":
        return func(a, b int) int {
            return a * b
        }
    default:
        return func(a, b int) int {
            return 0
        }
    }
}

func main() {
    addFunc := getOperator("+")
    fmt.Println(addFunc(3, 4)) // 输出: 7
    
    mulFunc := getOperator("*")
    fmt.Println(mulFunc(3, 4)) // 输出: 12
}
0

评论 (0)

取消