论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
Go语言入门8(匿名函数 闭包)
Go语言入门8(匿名函数 闭包)
魏晓东
论坛元老
|
2023-4-20 18:21:01
|
显示全部楼层
|
阅读模式
楼主
主题
1795
|
帖子
1795
|
积分
5385
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
匿名函数 闭包
匿名函数
顾名思义,就是没有名字的函数。。。
func(){
fmt.Println("我就是匿名函数")
}
复制代码
匿名函数的两种执行方法
将匿名函数赋给一个变量
定义后立即执行匿名函数
// 讲匿名函数赋给一个变量
tmp := func(){
fmt.Println("我是匿名函数")
}
tmp()
// 定以后立即执行匿名函数(在函数定义之后加小括号,表示直接运行)
func(){
fmt.Println("我是匿名函数")
}()
复制代码
闭包
闭包是由函数和与其相关的引用环境组合而成的实体,个人认为就是把一个函数以及函数所用到的参数用另外一个函数包起来,保证函数多次运行的时候,所用到的值不会被初始化
func demo01() func(){
tmp := "这个变量无论多少次都不会被初始化"
tmp1 := 1
return func(){
tmp1++
fmt.Println(tmp,tmp1)
}
}
func main(){
test := demo01() // 此时test就是一个闭包
test() // 这个变量无论多少次都不会被初始化 2
test() // 这个变量无论多少次都不会被初始化 3
test() // 这个变量无论多少次都不会被初始化 4
test() // 这个变量无论多少次都不会被初始化 5
}
复制代码
在上面的代码可以看到,定义了两个变量tmp和tmp1,这个被称之为自由变量,把匿名函数放在return返回的地方和自由变量构成的那个整体,就是闭包
优点
个人认为,就是使用自由变量这种概念,延长了函数中某些变量的生命周期,避免这些变量随着函数的调用而反复的初始化
GPT是这么说的
闭包(Closure)是一种在Go语言中支持的函数特性,它允许函数访问并操作函数外部的变量。闭包有以下几个好处:
- 封装:闭包可以访问函数外部的变量,但外部无法访问闭包内部的变量。这样可以实现数据的封装和保护。
- 状态保持:闭包可以捕获并保存外部变量的状态,即使函数执行完毕,这些状态仍然存在。这样可以实现状态的保持和传递。
- 动态生成函数:闭包可以根据运行时的数据动态生成新的函数,提供更多的灵活性。
总之,闭包为Go语言提供了更多的编程灵活性和表达能力,可以帮助
开发
人员更好地解决复杂问题。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
魏晓东
论坛元老
这个人很懒什么都没写!
楼主热帖
基础常用dos命令
Vulnhub靶机-Al-Web-1
Unity技术手册 - Shader实现灵魂状态 ...
.NET主流的几款重量级 ORM框架 ...
云原生之旅 - 14)遵循 GitOps 实践的 ...
火山引擎 DataLeap 计算治理自动化解决 ...
Java集合框架(三)-HashSet
vuluhub_jangow-01-1.0.1
Android studio连接MySQL并完成简单的 ...
2022年总结-博客篇
标签云
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
Oracle
MES
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表