当前位置:首页 > 科技  > 软件

Go 语言史诗级更新-循环Bug修复

来源: 责编: 时间:2023-09-25 10:38:09 391观看
导读背景前两天 Golang 的官方博客更新了一篇文章:Fixing For Loops in Go 1.22看这个标题的就是修复了 Go 循环的 bug,这真的是史诗级的更新;我身边接触到的大部分 Go 开发者都犯过这样的错误,包括我自己,所以前两年我也写过

背景

前两天 Golang 的官方博客更新了一篇文章:Fixing For Loops in Go 1.22x2F28资讯网——每日最新资讯28at.com

看这个标题的就是修复了 Go 循环的 bug,这真的是史诗级的更新;我身边接触到的大部分 Go 开发者都犯过这样的错误,包括我自己,所以前两年我也写过类似的博客:简单的 for 循环也会踩的坑x2F28资讯网——每日最新资讯28at.com

先来简单回顾下使用使用 for 循环会碰到的问题:x2F28资讯网——每日最新资讯28at.com

list := []*Demo{{"a"}, {"b"}}  for _, v := range list {   go func() {    fmt.Println("name="+v.Name)   }()  }    type Demo struct {   Name string  }

预期的结果应该是打印 a,b,但实际打印的却是b,b。x2F28资讯网——每日最新资讯28at.com

图片图片x2F28资讯网——每日最新资讯28at.com

Let's Encrypt: CAA Rechecking bug类似的问题连 mozilla 团队也没能幸免,所以也确实是一个非常常见的问题,这样的写法符合大部分的开发者的直觉,毕竟其他语言这么使用也没有问题。x2F28资讯网——每日最新资讯28at.com

当然在现阶段要解决也很简单,要么就是在使用之前先复制一次,或者使用闭包传参:x2F28资讯网——每日最新资讯28at.com

// 复制 list := []*Demo{{"a"}, {"b"}}   for _, v := range list {    temp:=v    go func() {     fmt.Println("name="+temp.Name)    }()   } // 闭包 list := []*Demo{{"a"}, {"b"}}   for _, v := range list {    go func(temp *Demo) {     fmt.Println("name="+temp.Name)    }(v)   }

还好官方也意识到了这个问题:x2F28资讯网——每日最新资讯28at.com

图片图片x2F28资讯网——每日最新资讯28at.com

所以在 1.22 中我们可以不用再写这个 



v:=v这个多余的复制语句了,也不会出现上面的问题。x2F28资讯网——每日最新资讯28at.com

我们在 1.21 中可以使用环境变量预览这个特性:x2F28资讯网——每日最新资讯28at.com

❯ GOEXPERIMENT=loopvar go testname=bname=a

在 1.22 发布后建议大家都可以升级了,将这种恶心的 bug 扼杀在摇篮里。x2F28资讯网——每日最新资讯28at.com

1.22 后带来了一个好消息是今后少了一道面试题,坏消息是又新增了一个 1.22 版本带来了哪些变化的面试题

本文链接:http://www.28at.com/showinfo-26-11246-0.htmlGo 语言史诗级更新-循环Bug修复

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 不可变模式篇:非常抓狂,这特么到底是哪里不对?

下一篇: 高并发下就该使用非阻塞式方式接口调用提高系统整体性能

标签:
  • 热门焦点
  • K60至尊版刚预热 一加Ace2 Pro正面硬刚

    Redmi这边刚如火如荼的宣传了K60 Ultra的各种技术和硬件配置,作为竞品的一加也坐不住了。一加中国区总裁李杰发布了两条微博,表示在自家的一加Ace2上早就已经采用了和PixelWo
  • Mate60手机壳曝光 致敬自己的经典设计

    8月3日消息,今天下午博主数码闲聊站带来了华为Mate60的第三方手机壳图,可以让我们在真机发布之前看看这款华为全新旗舰的大致轮廓。从曝光的图片看,Mate 60背后摄像头面积依然
  • Temu起诉SHEIN,跨境电商战事升级

    来源 | 伯虎财经(bohuFN)作者 | 陈平安日前据外媒报道,拼多多旗下跨境电商平台Temu正对竞争对手SHEIN提起新诉讼,诉状称Shein“利用市场支配力量强迫服装厂商与之签订独家
  • 腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之“想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!”曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • 新电商三兄弟,“抖快红”成团!

    来源:价值研究所作 者:Hernanderz 随着内容电商的概念兴起,抖音、快手、小红书组成的“新电商三兄弟”成为业内一股不可忽视的势力,给阿里、京东、拼多多带去了巨大压
  • 认真聊聊东方甄选:如何告别低垂的果实

    来源:山核桃作者:财经无忌爆火一年后,俞敏洪和他的东方甄选依旧是颇受外界关心的“网红”。7月5日至9日,为期5天的东方甄选“甘肃行”首次在自有App内直播,
  • 余承东:AI大模型技术的发展将会带来下一代智能终端操作系统的智慧体验

    8月4日消息,2023年华为开发者大会(HDC.Together)今天正式开幕,华为发布HarmonyOS 4、全新升级的鸿蒙开发套件、HarmonyOS Next开发者预览版本等一系列
  • 联想小新Pad Pro 12.6将要推出,搭载高通骁龙 870 处理器

    联想小新Pad Pro 12.6将于秋季新品会上推出,官方按照惯例直接在发布会前给出了机型的所有参数。联想小新 Pad Pro 12.6 将搭载高通骁龙 870 处理器,重量为 5
  • 微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
Top