AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

Go 語言史詩級更新-循環Bug修復

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

背景

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

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

先來簡單回顧下使用使用 for 循環會碰到的問題:QVd28資訊網——每日最新資訊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。QVd28資訊網——每日最新資訊28at.com

圖片圖片QVd28資訊網——每日最新資訊28at.com

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

當然在現階段要解決也很簡單,要么就是在使用之前先復制一次,或者使用閉包傳參:QVd28資訊網——每日最新資訊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)   }

還好官方也意識到了這個問題:QVd28資訊網——每日最新資訊28at.com

圖片圖片QVd28資訊網——每日最新資訊28at.com

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

我們在 1.21 中可以使用環境變量預覽這個特性:QVd28資訊網——每日最新資訊28at.com

? GOEXPERIMENT=loopvar go testname=bname=a

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

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

本文鏈接:http://www.tebozhan.com/showinfo-26-11246-0.htmlGo 語言史詩級更新-循環Bug修復

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

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

下一篇: 高并發下就該使用非阻塞式方式接口調用提高系統整體性能

標簽:
  • 熱門焦點
  • 俄羅斯:將審查iPhone等外國公司設備 保數據安全

    iPhone和特斯拉都屬于在各自領域領頭羊的品牌,推出的產品也也都是數一數二的,但對于一些國家而言,它們的產品可靠性和安全性還是在限制范圍內。近日,俄羅斯聯邦通信、信息技術
  • 2023 年的 Node.js 生態系統

    隨著技術的不斷演進和創新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態系統,可以幫助開發人員更快地實現復雜的應用。本文就來看看 Node.js 最新的生
  • 十個簡單但很有用的Python裝飾器

    裝飾器(Decorators)是Python中一種強大而靈活的功能,用于修改或增強函數或類的行為。裝飾器本質上是一個函數,它接受另一個函數或類作為參數,并返回一個新的函數或類。它們通常用
  • 如何通過Python線程池實現異步編程?

    線程池的概念和基本原理線程池是一種并發處理機制,它可以在程序啟動時創建一組線程,并將它們置于等待任務的狀態。當任務到達時,線程池中的某個線程會被喚醒并執行任務,執行完任
  • Temu起訴SHEIN,跨境電商戰事升級

    來源 | 伯虎財經(bohuFN)作者 | 陳平安日前據外媒報道,拼多多旗下跨境電商平臺Temu正對競爭對手SHEIN提起新訴訟,訴狀稱Shein“利用市場支配力量強迫服裝廠商與之簽訂獨家
  • 小米MIX Fold 3配置細節曝光:搭載領先版驍龍8 Gen2+罕見5倍長焦

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
  • AMD的AI芯片轉單給三星可能性不大 與臺積電已合作至2nm制程

    據 DIGITIMES 消息,英偉達 AI GPU 出貨逐季飆升,接下來 AMD MI 300 系列將在第 4 季底量產。而半導體業內人士表示,近日傳出 AMD 的 AI 芯片將轉單給
  • iQOO Neo8 Pro真機諜照曝光:天璣9200+和V1+旗艦雙芯加持

    去年10月,iQOO推出了iQOO Neo7系列機型,不僅搭載了天璣9000+,而且是同價位唯一一款天璣9000+直屏旗艦,一經上市便受到了用戶的廣泛關注。在時隔半年后,
  • 中關村論壇11月25日開幕,15位諾獎級大咖將發表演講

    11月18日,記者從2022中關村論壇新聞發布會上獲悉,中關村論壇將于11月25至30日在京舉行。本屆中關村論壇由科學技術部、國家發展改革委、工業和信息化部、國務
Top