日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

Go 語言史詩級更新-循環(huán)Bug修復(fù)

來源: 責(zé)編: 時間:2023-09-25 10:38:09 343觀看
導(dǎo)讀背景前兩天 Golang 的官方博客更新了一篇文章:Fixing For Loops in Go 1.22看這個標(biāo)題的就是修復(fù)了 Go 循環(huán)的 bug,這真的是史詩級的更新;我身邊接觸到的大部分 Go 開發(fā)者都犯過這樣的錯誤,包括我自己,所以前兩年我也寫過

背景

前兩天 Golang 的官方博客更新了一篇文章:Fixing For Loops in Go 1.22rju28資訊網(wǎng)——每日最新資訊28at.com

看這個標(biāo)題的就是修復(fù)了 Go 循環(huán)的 bug,這真的是史詩級的更新;我身邊接觸到的大部分 Go 開發(fā)者都犯過這樣的錯誤,包括我自己,所以前兩年我也寫過類似的博客:簡單的 for 循環(huán)也會踩的坑rju28資訊網(wǎng)——每日最新資訊28at.com

先來簡單回顧下使用使用 for 循環(huán)會碰到的問題:rju28資訊網(wǎng)——每日最新資訊28at.com

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

預(yù)期的結(jié)果應(yīng)該是打印 a,b,但實際打印的卻是b,b。rju28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片rju28資訊網(wǎng)——每日最新資訊28at.com

Let's Encrypt: CAA Rechecking bug類似的問題連 mozilla 團隊也沒能幸免,所以也確實是一個非常常見的問題,這樣的寫法符合大部分的開發(fā)者的直覺,畢竟其他語言這么使用也沒有問題。rju28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)然在現(xiàn)階段要解決也很簡單,要么就是在使用之前先復(fù)制一次,或者使用閉包傳參:rju28資訊網(wǎng)——每日最新資訊28at.com

// 復(fù)制 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)   }

還好官方也意識到了這個問題:rju28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片rju28資訊網(wǎng)——每日最新資訊28at.com

所以在 1.22 中我們可以不用再寫這個 ????v:=v這個多余的復(fù)制語句了,也不會出現(xiàn)上面的問題。rju28資訊網(wǎng)——每日最新資訊28at.com

我們在 1.21 中可以使用環(huán)境變量預(yù)覽這個特性:rju28資訊網(wǎng)——每日最新資訊28at.com

? GOEXPERIMENT=loopvar go testname=bname=a

在 1.22 發(fā)布后建議大家都可以升級了,將這種惡心的 bug 扼殺在搖籃里。rju28資訊網(wǎng)——每日最新資訊28at.com

1.22 后帶來了一個好消息是今后少了一道面試題,壞消息是又新增了一個 1.22 版本帶來了哪些變化的面試題

本文鏈接:http://www.www897cc.com/showinfo-26-11246-0.htmlGo 語言史詩級更新-循環(huán)Bug修復(fù)

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 不可變模式篇:非常抓狂,這特么到底是哪里不對?

下一篇: 高并發(fā)下就該使用非阻塞式方式接口調(diào)用提高系統(tǒng)整體性能

標(biāo)簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 林州市| 鹿泉市| 铁岭县| 宁都县| 云和县| 马关县| 含山县| 宣威市| 富川| 屏山县| 申扎县| 虞城县| 达孜县| 乐亭县| 道孚县| 宝应县| 中江县| 麻栗坡县| 靖宇县| 鹤峰县| 济阳县| 龙胜| 双鸭山市| 丘北县| 墨脱县| 和林格尔县| 东城区| 东宁县| 通州市| 瓮安县| 旌德县| 广河县| 青冈县| 泰兴市| 松桃| 巴塘县| 渝中区| 三门县| 南华县| 望城县| 土默特左旗|