Go 1.22 将修复 for 循环变量错误
上月正式发布的 Go 1.21 修改了 for 循环变量的语义(预览阶段,点此查看详情)。
现在,Go 团队表示 Go 1.22 会将这项特性发布为正式功能。
根据 Go 开发团队技术 leader Russ Cox (rsc) 的介绍,Go 开发者经常会犯的错误是在循环迭代结束后,保留对循环变量的引用,此时它会采用预期之外的新值。
例如下面的程序:
func main() { done := make(chan bool) values := []string{"a", "b", "c"} for _, v := range values { go func() { fmt.Println(v) done <- true }() } // wait for all goroutines to complete before exiting for _ = range values { <-done } }
其创建的三个 goroutine 都用于打印相同的变量v
,因此它们只会打印出 “c”, “c”, “c”,而不是按顺序打印 “a”, “b”, 和 “c”。
从 Go1.21 开始,开发者可以启用GOEXPERIMENT=loopvar
来构建 Go 程序,以解决上文提到的 for 循环变量问题。
构建命令:
GOEXPERIMENT=loopvar go install my/program GOEXPERIMENT=loopvar go build my/program GOEXPERIMENT=loopvar go test my/program GOEXPERIMENT=loopvar go test my/program -bench=. ...
现在 Go 开发团队表示,从 Go1.22 开始,新的 for 循环语义将会在 go.mod 文件中的 Go 版本大于等于 Go1.22 下默认启用。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Linux 内核 LTS 期限将从 6 年恢复至 2 年
在日前举行的欧洲开源峰会上,Linux 内核开发人员兼《Linux Weekly News》执行主编 Jonathan Corbet 介绍了 Linux 内核的最新动态以及未来的发展方向。其中一项即将发生的重大变化是:Linux 内核的长期支持 (LTS) 时间将从六年缩短至两年。 目前 Linux 社区仍然遵守当前的生命周期终止时间表,因此已发布的 6.1、5.15、5.10、5.4、4.19 和 4.14 六个 LTS 版本会遵守六年的规律,但之后发布的新版本则只会有两年周期。 对此,Corbet 解释称,主要原因在于缺乏使用和缺乏支持;“维持这么久确实没有意义,因为人们已经不再使用它们了”。还有一个很大的问题是,Linux 代码维护人员的倦怠;他们在完成工作时面临着许多障碍。一方面,维护人员需要在日常工作之余维护代码,但维护工作通常没有报酬。最重要的是,由于人手不足等问题,维护人员的工作量也越来越大。 科技媒体 Ars Technica 认为,对于 PC 端来说,两年似乎是一个不错的支持窗口;但对于基于 Linux 打造的 Android 移动操作系统来说,却不尽然。2017 年...
- 下一篇
浅析利用AI智能识别与视频监控技术打造智慧水产养殖监管系统
一、方案背景 针对目前水产养殖集约、高产、高效、生态、安全的发展需求,基于智能传感、智慧物联网、人工智能、视频监控等技术打造智慧水产系统,成为当前行业的发展趋势。传统的人工观察水产养殖方式较为单一,难以及时发现人员非法入侵、偷盗、偷钓、水质污染等管理问题。 二、方案概述 TSINGSEE青犀视频智慧水产养殖方案主要是围绕视频监控技术、人工智能检测技术、云计算、大数据、物联网等新兴技术,通过远程高清视频监控与视频AI智能检测,可对水产养殖区域进行24小时监管,通过实时AI检测与监控,出现异常时立即抓拍并报警提醒,有效节省人力成本,提升监管工作的及时性、准确性和有效性。 借助TSINGSEE青犀视频AI算法平台以及安防监控系统EasyCVR平台,养殖户可以通过视频监控对水产养殖环境进行全天候、实时监管,通过数字大屏对各养殖区域环境进行实时远程监控,对异常情况(如人员闯入、水质变色、水面漂浮物等)进行抓拍预警,并通知提醒养殖户及时现场确认,保障养殖现场安全生产。 三、方案特点 1)人员闯入/周界入侵 基于AI深度学习算法,在水产养殖区内划定警戒区域,当检测到人体,则判定为入侵事件。TSI...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启