03-匿名函数和闭包
1.01-包引用和引用顺序2.02-运算符号、标识符、注释、关键字3.03-变量和作用域4.02-常量(const)5.03-数组(array)6.04-切片(slice)7.05-map8.06-指针(pointer)9.07-通道(channel)10.08-结构体(struct)11.01-if语句12.02-for循环13.04-select语句14.03-switch语句15.make()、new()16.copy(切片间复制)17.append(增加切片成员)18.delete(删除map的成员)19.panic&recover
20.03-匿名函数和闭包
21.01-函数简单使用22.02-形参和实参23.04-递归函数24.05-方法25.06-接口(interface)26.01-并发27.02-携程通讯28.03-携程同步29.01-连接和建表30.02-创建数据31.03-基本查询32.04-高级查询33.05-初始化34.06-更新数据35.07-删除数据36.08 事务37.根据操作系统程序自动选择不同常量38.golang字串的base64编码解码39.golang数据类型转换40.golang 时间/时间戳的获取和转换@
1. 匿名函数
概念
如其名,匿名函数不声明函数名。因此要调用匿名函数只能定义一个变量等于该匿名函数。
语法
func(参数 参数类型)(返回值 返回值类型){ 函数体 }
示例
- 代码
package main import "fmt" func main(){ a := 7 b := 8 //定义匿名函数 getSum := func (x int,y int)int{ sum := x + y return sum } //使用匿名函数 result := getSum(a,b) fmt.Printf("%d 和 %d 的和是:%d",a,b,result) }
- 结果
7 和 8 的和是:15
2. 闭包
概念
- 什么是闭包
闭包指的是一个匿名函数和与其相关的引用环境组合而成的函数。即,闭包 = 函数 + 引用环境 。
- 闭包返回值
闭包的返回值是一个函数
语法
func 闭包函数名() (返回函数名 func() 返回函数的返回值类型) { …… return 匿名函数 }
语法示例
- 代码
package main import "fmt" //定义闭包 func 训练成员() func() int { 等级 :=0 return func() int { 等级 +=1 return 等级 } } func main(){ //定义变量等于闭包的返回函数 训练关羽 := 训练成员() //执行闭包的返回函数,并打印结果。 fmt.Printf("关羽等级为 %d\n",训练关羽()) fmt.Printf("关羽等级为 %d\n",训练关羽()) fmt.Printf("关羽等级为 %d\n",训练关羽()) fmt.Printf("关羽等级为 %d\n",训练关羽()) //定义另一个变量等于闭包的返回函数 训练张飞 := 训练成员() fmt.Printf("张飞等级为 %d\n",训练张飞()) fmt.Printf("张飞等级为 %d\n",训练张飞()) fmt.Printf("张飞等级为 %d\n",训练张飞()) }
- 结果
关羽等级为 1 关羽等级为 2 关羽等级为 3 关羽等级为 4 张飞等级为 1 张飞等级为 2 张飞等级为 3
- 结果分析
如上可见:
- 定义变量
训练关羽
等于闭包训练成员
的返回函数;- 闭包中的变量
等级
会一致保存在内存中(直到main函数运行结束)- 第一次执行
训练关羽()
,关羽的等级+1结果为 1;- 第二次执行
训练关羽()
,关羽的等级+1,因为变量等级=1
仍然保存在内存中,因此=1后结果为 2;- 第三次执行
训练关羽()
,关羽的等级+1,因为变量等级=2
仍然保存在内存中,因此=1后结果为 2;因此,如前边所说:闭包 = 函数 + 引用环境
- 再定义变量
训练张飞
等于闭包训练成员
的返回函数;- 闭包中的变量
等级
会一致保存在内存中,而这个属于训练张飞
的变量等级
和训练关羽
的等级
并没有关系。- 因此,第一次执行
训练张飞()
,张飞的初始等级=0,等级+1,结果为 1;
分类:
go语言开发 / go基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具