Redian新闻
>
Go 1.22将修复for循环变量错误

Go 1.22将修复for循环变量错误

公众号新闻

出品 | OSC开源社区(ID:oschina2013)
上月正式发布的 Go 1.21 修改了 for 循环变量的语义(预览阶段,详情:https://github.com/golang/go/wiki/LoopvarExperiment)。
现在,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 下默认启用。


明天,成都,我们不见不散~
🌟前沿技术分享 + 大型交流活动 + 精美茶歇礼物~
🌟快扫描海报二维码报名来面基吧!


END



Unity收费哪李贵了



这里有最新开源资讯、软件更新、技术干货等内容

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
低级错误!首轮问询回复后,招股说明书仍存在数据错误、部分问题漏答注意抗洪!南加发布4级飓风警报!洛县到下周2将面临大规模停电、火灾事故!李翔x李丰:剥离情绪,聊聊2023下半年的经济变量 | 李丰专栏“碳”循环与“美元”循环High Park下周将修建新自行车道并减少停车位一九八九(16)博士生自行申请恢复F-1身份+重审遭拒,如何力挽狂澜?【宏观市场】消费从总量修复到结构修复——评2023年10月增长数据23 岁博士生,修复 Firefox 中长达 22 年的 “幽灵老 Bug ”【案例分享】两度重审,两度补件,成功恢复F-1学生身份效率堪忧!奥克兰道路坑洞修复需4个月,有国家仅用2天修复近千倍坍塌!周边店主:“损失惨重!”iOS 17.1 将修复法国iPhone 12辐射问题 / 新款PS5发布 / 华为计划明年手机出货量翻倍修复无法添加 PPA:“This PPA does not support jammy” 错误 | Linux 中国连环变态X魔!法拉盛华男在约会软件上认识妹子然后带回家狂X...未来一年4K修复百部经典港片 | 抖音、火山引擎、中国电影资料馆发起“经典香港电影修复计划”11月必看!“新世界三大男高音”Juan Diego Flórez首次亮相澳洲!剥离情绪,聊聊2023下半年的经济变量急了!美国移民局即将修改H1B抽签规则,今年留美迎来新转机Unity道歉:将修改 "runtime fee" 收费政策iOS 17.0.3将修复iPhone 15 Pro过热问题/诺贝尔物理学奖授予阿秒激光/Netflix 计划再次涨价23岁博士生修复Firefox中的22年 “幽灵老Bug”面试官问我 ,try catch 应该在 for 循环里面还是外面?硬核观察 #1179 苹果公司暂停开发明年的操作系统,以修复软件错误百川智能再发新模型,超越Claude2将上下文窗口做到了全球第一又一场伟大的胜利一閃一閃亮晶晶 Twinkle, Twinkle无耻的生活看热闹的不嫌事大,吃瓜群众不怕瓜大警惕长期主义误区!嘉实基金经雷:要防守更要进攻,用"快变量"来校正"慢变量"今日闪购:科颜氏 熬夜神器 夜间修复护肤品全场8折,入夜间修复精华液!修复 Arch Linux 中的 “Bash: man command not found” 错误 | Linux 中国那些惊为天人的变量名!美印都看好,“印度船厂将修美军舰”一加数字Pro系列机型或回归,一加12将全面升级Bash 基础知识系列 #8:For、While 和 Until 循环 | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。