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

golang 1.22特性之for loop

背景

go1.22版本 for loop每轮循环都生成新的变量.
原谅: https://tip.golang.org/doc/go1.22

Previously, the variables declared by a “for” loop were created once and updated by each iteration. In Go 1.22, each iteration of the loop creates new variables, to avoid accidental sharing bugs. The transition support tooling described in the proposal continues to work in the same way it did in Go 1.21.

测试

接下来将使用同样的代码, 分别使用go1.21.4和go1.22.4版本来运行:

package mainimport ("fmt""time"
)func main() {for i := 0; i < 5; i++ {go func() {fmt.Println(i, &i)}()}time.Sleep(time.Second)
}

在我的mac 机器上, go1.21.4的运行结果(可能每次都不太一样):

$ go run main.go
5 0x14000112008
5 0x14000112008
5 0x14000112008
3 0x14000112008
5 0x14000112008

使用go1.22.4运行的结果:

$ go run main.go
0 0x14000110018
4 0x14000110038
3 0x14000110030
1 0x14000110020
2 0x14000110028

总结

go1.22版本对于for循环中的每个循环变量, 每轮循环都是都是使用新的变量.

相关文章:

  • 确保家电安全无忧:可燃气体报警器检验的重要性与必要性
  • 【小程序静态页面】猜拳游戏大转盘积分游戏小程序前端模板源码
  • word图题表题公式按照章节编号(不用题注)
  • 基于x86+FPGA+AI轴承缺陷视觉检测系统,摇枕弹簧智能检测系统
  • [数据集][目标检测]电力场景下电柜箱门把手检测数据集VOC+YOLO格式1167张1类别
  • MapReduce的执行流程排序
  • Spring Boot中的分布式文件系统
  • 版本控制系统:Git 纯应用(持续更新)
  • 轻松创建对象——简单工厂模式(Python实现)
  • vue 中使用element-ui实现锚点定位表单
  • 矮油,希喂、喜崽、爱立方主食冻干是超贵的进口平替?最新测评
  • 大二暑假 + 大三上
  • uniapp小程序打开地图导航
  • 2024国内排名靠前的十大源码交易平台
  • 《Unity3D高级编程之进阶主程》第二章 架构(二) - 软件系统架构思维方式
  • (三)从jvm层面了解线程的启动和停止
  • [deviceone开发]-do_Webview的基本示例
  • bearychat的java client
  • Fabric架构演变之路
  • Java 23种设计模式 之单例模式 7种实现方式
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Promise面试题2实现异步串行执行
  • Web Storage相关
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 初探 Vue 生命周期和钩子函数
  • 从伪并行的 Python 多线程说起
  • 高性能JavaScript阅读简记(三)
  • 搞机器学习要哪些技能
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 思否第一天
  • 我的业余项目总结
  • 源码安装memcached和php memcache扩展
  • 正则表达式小结
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​如何防止网络攻击?
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #微信小程序:微信小程序常见的配置传旨
  • (12)Hive调优——count distinct去重优化
  • (7)svelte 教程: Props(属性)
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (三)c52学习之旅-点亮LED灯
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (四)c52学习之旅-流水LED灯
  • (转)程序员疫苗:代码注入
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .gitignore文件—git忽略文件
  • .NET性能优化(文摘)
  • :O)修改linux硬件时间
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • [ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)