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
}

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

首先是函数的定义:

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

相关推荐
枫叶丹415 小时前
【Qt开发】Qt窗口(九) -> QFontDialog 字体对话框
c语言·开发语言·数据库·c++·qt
海上彼尚16 小时前
Go之路 - 7.go的结构体
开发语言·后端·golang
源代码•宸21 小时前
分布式缓存-GO(分布式算法之一致性哈希、缓存对外服务化)
开发语言·经验分享·分布式·后端·算法·缓存·golang
云和数据.ChenGuang21 小时前
PHP-FPM返回的File not found.”的本质
开发语言·php·运维工程师·运维技术
It's now21 小时前
Spring AI 基础开发流程
java·人工智能·后端·spring
计算机毕设VX:Fegn089521 小时前
计算机毕业设计|基于springboot + vue图书商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
R.lin21 小时前
Java 8日期时间API完全指南
java·开发语言·python
yangpipi-21 小时前
《C++并发编程实战》 第4章 并发操作的同步
开发语言·c++
火钳游侠1 天前
java单行注释,多行注释,文档注释
java·开发语言
有趣的我1 天前
C++ 多态介绍
开发语言·c++