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
}

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

首先是函数的定义:

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

相关推荐
z***75151 小时前
【Springboot3+vue3】从零到一搭建Springboot3+vue3前后端分离项目之后端环境搭建
android·前端·后端
胡萝卜3.02 小时前
掌握C++ map:高效键值对操作指南
开发语言·数据结构·c++·人工智能·map
电子_咸鱼2 小时前
【STL string 全解析:接口详解、测试实战与模拟实现】
开发语言·c++·vscode·python·算法·leetcode
w***95493 小时前
SQL美化器:sql-beautify安装与配置完全指南
android·前端·后端
沐知全栈开发3 小时前
ionic 选项卡栏操作详解
开发语言
曹牧3 小时前
C#中,#region和#endregion
开发语言·c#
顾安r3 小时前
11.22 脚本打包APP 排错指南
linux·服务器·开发语言·前端·flask
橙子家3 小时前
Serilog 日志库简单实践(三)集中式日志与分析平台 Sinks(.net8)
后端
蒙小萌19934 小时前
Swift UIKit MVVM + RxSwift Development Rules
开发语言·prompt·swift·rxswift