当前位置: 首页 > news >正文

GO语言---匿名函数

文章目录

  • 匿名函数说明
  • 基本语法
  • 匿名函数的几种使用方式
    • 直接定义并调用(立即执行函数)
    • 赋值给变量,后续调用
    • 作为函数参数(回调函数)

匿名函数说明

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

基本语法

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

匿名函数的几种使用方式

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

这种调用方式和直接把功能写在函数中的区别:
1、将无法复用功能块独立出来,一个功能使用一段代码,结果清晰。
2、匿名函数中定义的变量有自己的空间,不会污染外部的变量。

package mainimport "fmt"func main() {// 定义并立即执行func() {fmt.Println("这是一个匿名函数")}()  // 注意这里的括号表示立即调用// 带参数的立即执行匿名函数func(msg string) {fmt.Println("收到消息:", msg)}("Hello, Go!")
}

赋值给变量,后续调用

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

package mainimport "fmt"func main() {// 将匿名函数赋值给变量add := func(a, b int) int {return a + b}result := add(3, 5)fmt.Println("3 + 5 =", result)  // 输出: 3 + 5 = 8
}

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

package mainimport "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: 30fmt.Println("Product:", product) // 输出: Product: 200
}

下面这个用法对于新手可能难以理解,博主来仔细拆解一下。
首先是函数的定义:
在这里插入图片描述
再来看看函数的调用和匿名函数的实现:
在这里插入图片描述

http://www.dtcms.com/a/250154.html

相关文章:

  • scanf 读取字符串
  • 高压接地电阻柜组装前的准备工作
  • 容器里有10升油,现在只有两个分别能装3升和7升油的瓶子,需要将10 升油等分成2 个5 升油。程序输出分油次数最少的详细操作过程。
  • 【Unity】使用 C# SerialPort 进行串口通信
  • Docker容器中运行OpenMPI并行程序, 参数调优
  • 虚拟内存优化:从原理到实战的全方位解析(工具版)
  • 静态变量详解(static variable)
  • uni-app项目实战笔记8--个人中心页面搭建
  • 现代Android开发:轻量级协程框架设计与实践
  • 设计模式汇总
  • 通达信跟老庄追涨停指标公式
  • [k8s]--exec探针详细解析
  • java 设计模式_行为型_17观察者模式
  • 如何设计幂等性接口防止Seata事务悬挂?
  • AJAX——前后端传输数据场景下使用的技术
  • 基于Docker编译运行orb-slam2_with_semantic_labelling
  • C# 枚 举(枚举)
  • [nginx]反向代理grpc
  • [技巧] 接口优化技巧合集
  • 数列求和计算
  • 人口贩卖暑期威胁消解:算法协同提升安全预警
  • 学习昇腾开发的第一天--环境配置
  • 技术实录-从 MySQL 启动失败到大小写兼容恢复:一次完整故障排查复盘20250614
  • Flask入门:从零搭建Python Web应用
  • Flink task、Operator 和 UDF 之间的关系
  • 【论文解读】OmegaPRM:MCTS驱动的自动化过程监督,赋能LLM数学推理新高度
  • [学习] 牛顿迭代法:从数学原理到实战
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | AnimatedNavigation(动态导航)
  • 【Spring源码核心篇-08】spring中配置类底层原理和源码实现
  • Vite 预构建机制深度解析(Vite缺点之一)