GO语言---匿名函数

文章目录

匿名函数说明

在Go语言中,匿名函数(Anonymous Function)是一种没有名称的函数定义方式,可以直接定义并使用,或者赋值给变量。Go语言中的匿名函数也被称为函数字面量(Function Literal)。

基本语法

bash 复制代码
func(参数列表) 返回值类型 {
    // 函数体
}

匿名函数的几种使用方式

直接定义并调用(立即执行函数)

这种调用方式和直接把功能写在函数中的区别:

1、将无法复用功能块独立出来,一个功能使用一段代码,结果清晰。

2、匿名函数中定义的变量有自己的空间,不会污染外部的变量。

bash 复制代码
package main

import "fmt"

func main() {
    // 定义并立即执行
    func() {
        fmt.Println("这是一个匿名函数")
    }()  // 注意这里的括号表示立即调用

    // 带参数的立即执行匿名函数
    func(msg string) {
        fmt.Println("收到消息:", msg)
    }("Hello, Go!")
}

赋值给变量,后续调用

这里将匿名函数赋值给函数指针变量add,后续直接调用函数指针变量add就相当于调用匿名函数。

bash 复制代码
package main

import "fmt"

func main() {
    // 将匿名函数赋值给变量
    add := func(a, b int) int {
        return a + b
    }

    result := add(3, 5)
    fmt.Println("3 + 5 =", result)  // 输出: 3 + 5 = 8
}

作为函数参数(回调函数)

bash 复制代码
package main

import "fmt"

// 接受函数作为参数的函数
func calculate(a, b int, op func(int, int) int) int {
    return op(a, b)
}

func main() {
    sum := calculate(10, 20, func(x, y int) int {
        return x + y
    })
    
    product := calculate(10, 20, func(x, y int) int {
        return x * y
    })
    
    fmt.Println("Sum:", sum)       // 输出: Sum: 30
    fmt.Println("Product:", product) // 输出: Product: 200
}

下面这个用法对于新手可能难以理解,博主来仔细拆解一下。

首先是函数的定义:

再来看看函数的调用和匿名函数的实现:

相关推荐
伊信1 分钟前
Spring AI 基础学习与应用
java·后端
步行cgn20 分钟前
Spring 通过 factory-method 实例化 Bean 详解与常见错误排查
java·后端
lv__pf21 分钟前
seata【实战 msb】
java·开发语言·后端
点纭21 分钟前
C 语言 第七章 常用函数(3)
c语言·开发语言·算法·oracle·c#
Ricon组态薄荷糖22 分钟前
Ricon组态系统:工业组件开发指南与实践
前端·后端·物联网
旺仔不是程序员23 分钟前
相关子查询与性能优化:PostgreSQL 逐行执行的代价与 JOIN 重写
数据库·后端·sql
右耳朵猫AI28 分钟前
PHP周刊2026W38 | Laravel AI可观测、Symfony三版本、Webhook零信任、事件溯源架构
后端·php·laravel
沙蒿同学37 分钟前
我把架构约定编译成了会变红的测试:Wails v2 + Go + Vue3 桌面脚手架实战
前端·后端·github
量化分析码农39 分钟前
【Python量化数据工程实战 #01】拉下来的行情全是"脏数据"?停牌、跳空、异常值一站式清洗
后端
专业程序开发源41 分钟前
springboot篮球联赛管理系统13635-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计