隨著 Go 編程語言的不斷發展,即將發布的版本 Go 1.22 承諾帶來各種新功能、改進和變化。預計于 2024 年 2 月發布的 Go 1.22 引入了對語言、工具、運行時、編譯器和核心庫的增強。讓我們深入了解一些在這個即將發布的版本中開發者可以期待的重要變化和新增功能。
(1) “For” 循環增強
在 Go 1.22 中,“for” 循環有兩個顯著的變化。在此之前,“for” 循環內聲明的變量會在每次迭代中創建一次并進行更新。而新版本中,每次迭代都會創建新的變量,以防止意外的共享錯誤。此外,“for” 循環現在可以在整數上進行范圍遍歷,為循環結構提供了更多靈活性。
示例:
package mainimport "fmt"func main() { for i := range 10 { fmt.Println(10 - i) } fmt.Println("go1.22 has lift-off!")}
(2) 函數迭代器的范圍(預覽)
Go 1.22 包含了一個關于范圍函數迭代器的語言變更的預覽。可以通過使用 GOEXPERIMENT=rangefunc 構建來啟用此功能。
(1) Go 命令
Go 命令引入了與工作區依賴項相關的增強功能。工作區現在可以使用包含依賴項的 vendor 目錄,而 go work vendor 命令會創建并使用此目錄。值得注意的是,在傳統的 GOPATH 模式中,go get 不再在模塊外受支持。
(2) Trace 工具
Trace 工具的 Web UI 已進行了更新,解決了問題并提高了可讀性。由 Go 1.22 或更新版本生成的跟蹤將受益于這些改進,計劃在未來版本中擴展到舊版本的跟蹤。
(3) Vet 工具
Vet 工具引入了新的警告,包括:
(1) 垃圾收集元數據優化
Go 1.22 通過將垃圾收集元數據保持更接近每個堆對象來優化垃圾收集元數據。這提高了大多數程序的 CPU 性能 1–3%,并減少了內存開銷。但是,它可能會影響依賴于特定內存對齊的程序,需要進行調整。
(2) Windows/AMD64 增強
在 windows/amd64 端口上,程序現在可以使用 SetUnhandledExceptionFilter Win32 函數來捕獲 Go 運行時未處理的異常,增強了調試功能。
(1) 檔案引導優化(PGO)改進
Go 1.22 中的 PGO 構建可以使更高比例的調用進行虛擬化,從而使大多數程序的性能提高 2–14%。編譯器還引入了接口方法調用的改進內聯啟發式算法。
(2) 新的內聯階段(預覽)
引入了一個增強的內聯階段的預覽,其中包含在重要調用點提高內聯能力的啟發式算法,同時在不太關鍵的調用點上不鼓勵內聯。通過使用 GOEXPERIMENT=newinliner 構建來啟用此功能。
鏈接器的 -s 和 -w 標志在所有平臺上的行為更加一致,為 ELF 平臺和 Windows 引入了其他功能。
(1) Math/Rand 版本 2
Go 1.22 引入了標準庫中的第一個“v2”包:math/rand/v2。此版本帶來了改進,包括一個新的全局生成器和更快的算法。
(2) 增強的 HTTP 路由模式
net/http 標準庫中的 HTTP 路由模式變得更加表達,支持方法、通配符,并改進了重疊模式的處理。
核心庫經歷了與 Go 1 兼容性承諾一致的各種次要更改和更新。此外,整體上進行了性能改進。
Go 1.22 為語言、工具、運行時、編譯器和核心庫帶來了一系列令人興奮的功能和改進。開發者可以期待增強的循環語義、改進的工具、優化的垃圾收集等等。專注于保持兼容性和性能,Go 作為一種多才多藝且高效的編程語言繼續發展。請關注 2024 年 2 月的正式發布,并探索 Go 1.22 提供的新可能性。
Go 1.22 將于 2024 年 2 月發布。
本文鏈接:http://www.tebozhan.com/showinfo-26-65876-0.html提升 Go 編程:Go 1.22 中有哪些新特性?
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: C/C++語言宏定義函數封裝小妙招!