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

Go在1.22版本修复for循环陷阱

记录

前段时间升级Go版本碰到一个大坑,先记录。

先上代码案例:

func main() {
	testClosure()
}

func testClosure() {
	for i := 0; i < 5; i++ {
		defer func() {
			fmt.Println(i)
		}()
	}
}

在1.22之下(不包括1.22)版本:
输出的结果:

5
5
5
5
5

在1.22及之上版本:
输出的结果:

4
3
2
1
0

完全不一样。
查阅了半天资料,最终在官网中找到答案。
在这里插入图片描述
官网地址:https://golang.google.cn/blog/go1.22
经过测试,该问题仅针对for循环中使用闭包,别的闭包效果还是跟原来一样。


http://www.kler.cn/a/568938.html

相关文章:

  • RJ45网口 与 M12连接器对比(D-code,X-code)
  • 面试常见问题
  • UDP接收方法使用Task替代Thread(解决关闭程序未响应的问题)
  • Flink事件时间和处理时间咋区分
  • yolov8_pose模型,使用rknn在安卓RK3568上使用
  • 深入解析 MySQL 中的时间函数:NOW() 与 SYSDATE() 的奥秘
  • TCP的四次挥⼿为什么是四次?为什么不能是三 次
  • 【计算机网络——概述】
  • 深搜专题7:最大质数
  • 【基于Raft的KV共识算法】-序:Raft概述
  • JavaEE基础之- 过滤器和监听器Filter and Listener
  • Deepseek 模型蒸馏
  • 每日OJ_牛客_NC316体育课测验(二)_拓扑排序_C++_Java
  • FPGA开发,使用Deepseek V3还是R1(3):系统级与RTL级
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_init_cycle 函数 - 详解(8)
  • Ubuntu 20.04 安装 Node.js 20.x、npm、cnpm 和 pnpm 完整指南
  • LangPrompt提示词
  • 基于单片机的GPS定位系统设计
  • ETF期权的结算价如何结算?
  • 深度解析Ant Design Pro 6开发实践