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
}

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

首先是函数的定义:

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

相关推荐
nnerddboy3 分钟前
Rust教程04:引用、借用与切片
开发语言·后端·rust
Rain的Java大神之路13 分钟前
线上接口负载满了如何解决
java·数据库·redis·后端·缓存·面试·架构
jerryinwuhan25 分钟前
《Python数据预处理》第四章
开发语言·python
长江&后浪28 分钟前
防火墙的描述
开发语言·网络·php
观无1 小时前
若依EasyExcel实现单元格合并
开发语言·前端·javascript
雨晨源码(同名B站)1 小时前
基于Python的网易云音乐评论数据情感化分析系统 音乐爬虫信息可视化 |SnowNLP评论情感分析
开发语言·hadoop·爬虫·python·信息可视化·毕业设计
我不是疯子是傻子1 小时前
串口通信数据帧粘包拆包再进化:基于 Qt 的滑动窗口与 CRC 校验实战
开发语言·qt
程序员老陆1 小时前
Qt中实现窗口真全屏(覆盖Windows任务栏)
开发语言·windows·qt
weixin_431600441 小时前
NestJS 入门(7):生命周期钩子——构造函数和 `OnModuleInit` 差在哪?
前端·后端·学习·node.js·nest.js
小强库计算机毕业设计1 小时前
基于 Spring Boot + Vue3 的校园管理系统
java·spring boot·后端·项目实战·管理系统·技术分享·校园管理系统实战