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

Go 闭包【1】基础

关于GO闭包的东西,我有点忘了,是不是有参数就马上串行执行?没参数就是并行异步执行?

并不是这样的。参数的存在与否并不决定它是同步还是异步执行。

在 Go 语言中,执行方式(串行还是异步)仅取决于你如何调用它:

  1. 串行执行(同步):直接调用函数或匿名函数。
  2. 异步执行(并行/并发):使用go关键字启动协程(Goroutine)。

你产生这种“模糊印象”的原因,很可能是因为在循环中使用 Goroutine 时,为了避免闭包捕获外部变量导致的作用域陷阱,通常会有两种写法:

1. 传参数的写法(推荐)

如果你通过参数传递变量,每个协程都会拿到该变量在当前时刻的副本。

for i := 0; i < 5; i++ { go func(n int) { fmt.Println(n) // 这里会正确输出 0, 1, 2, 3, 4 (顺序随机) }(i) // 立即将当前的 i 作为参数传入 }

2. 不传参数的写法(容易出错)

如果不传参数,闭包会直接引用外部变量i。因为协程启动需要时间,等协程真正开始运行的时候,循环可能已经跑完了,此时i的值可能已经是 5。

for i := 0; i < 5; i++ { go func() { fmt.Println(i) // 可能全部输出 5 }() }

总结

  • 传参:是为了“固定”变量值,防止多个协程引用同一个一直在变的变量。
  • 不传参:闭包会引用外部作用域变量的地址。
  • 是否异步:只看有没有那个go关键字。
http://www.jsqmd.com/news/863495/

相关文章:

  • 告别焦虑等待!Elsevier投稿状态自动追踪插件,让你的科研进度一目了然
  • 调用外部服务却无监控?这可能是下一个雪崩的源头
  • ContentBranch+CFBranch混合电影推荐模型|全网独家复现,深度学习实战篇 引入双分支融合架构,兼顾内容特征与协同信号、助力冷启动缓解、数据稀疏性优化、推荐精度有效涨点
  • 【硬件面试题精讲】运放求和 + 同相放大电路输出计算(附原理与通用公式)
  • 淘金币自动化脚本:5分钟搞定淘宝每日任务,轻松解放双手
  • 苏州德奥诚汽车服务:太仓靠谱的报废车回收推荐哪几家 - LYL仔仔
  • Go闭包【2】 1.22 对 for 循环里闭包陷阱的那个“史诗级更新”
  • HoRain云--AI 底层架构
  • QQ音乐加密文件终极转换指南:3步将.qmc文件转为MP3/FLAC
  • 达梦数据库-堆栈看问题-01-asmapi_asm_extent_load
  • 如何在Windows上实现专业级游戏控制器模拟:ViGEmBus驱动深度解析
  • DS4Windows终极指南:如何在Windows上完美使用PS4/PS5手柄玩所有游戏
  • Warcraft Helper:现代Windows环境下魔兽争霸3兼容性技术解决方案深度解析
  • TranslucentTB:Windows任务栏透明化终极指南与5大创意应用场景
  • 你的 BroadcastReceiver 为何在后台装死?—— Android 8.0+ 隐式广播限制与动态注册完全指南
  • 苏州购宠避坑指南|5 家靠谱实体门店 - 资讯速览
  • 2026年5月论文降 AI 率工具终极推荐:超过一半学生的选择,早标网为何降AI效果好? - 全维度降AI
  • 10.Python 迭代器、生成器与装饰器 深度解析
  • 3分钟快速上手SketchUp STL插件:终极3D打印模型转换完整指南
  • [MAF的Agent管道详解-04]如何让LLM按照要求的结构输出数据?
  • 浏览器资源嗅探革命:猫抓扩展如何重新定义在线媒体捕获体验
  • 如何快速安装BetterNCM:终极网易云音乐插件管理指南
  • 深度解析Unity游戏实时翻译插件:XUnity.AutoTranslator的5大实战应用场景与架构设计
  • 大学买不到GPU怪我?黄仁勋斯坦福现场火力全开:是你们体制的错!
  • Sub2API + CCSwitch 实现 Codex 反向代理:多账号流量分发实战(解决codex手机号验证)可以润色吗
  • 【紧急更新】Midjourney v6.1金属纹理算法变更预警:3个必须重训的材质参数阈值,错过将导致PBR贴图链断裂
  • 武安市建龙废钢基地物资:峰峰矿专业的废钢回收公司推荐几家 - LYL仔仔
  • 2026年国内矿粉球团粘合剂头部厂家实力排行 - 奔跑123
  • 3步彻底解决Windows右键菜单卡顿:ContextMenuManager终极优化指南
  • 抖音无水印批量下载终极指南:douyin-downloader免费神器