Go 1.22 已經發布,了解其新功能和改進

戈蘭

Go 是一種並發的編譯型編程語言,具有受 C 語法啟發的靜態類型。

新版本 Go 1.22,在版本 1.21 六個月後發布, 對工具集、運行時、最佳化改進、編譯器改進和庫進行了許多顯著更改。

對於那些不了解 Go 的人,我必須告訴你,這是這是谷歌正在開發的一種編程語言 在社區的參與下,作為一種混合解決方案,將編譯語言的高性能與腳本語言的優點(例如易於編寫代碼、開發速度和防止錯誤)結合起來。

Go 1.22的主要新功能

在這個從 Go 1.22 引入的新版本中,重點介紹了 「for」迴圈的兩個變化以前,for 迴圈宣告的變數只會建立一次 並在每次迭代中進行更新。 在 Go 1.22 中,循環的每次迭代都會建立新變數 以避免意外共享錯誤,此外 增加了對 for 循環範圍函數的實驗支持 (GOEXPERIMENT=rangefunc), 它允許您將函數指定為迭代器並且 解決了 for 迴圈的一個長期存在的問題 這導致協程調用在迭代之間共享循環變數。此外,for 迴圈現在可以循環整數。例如:

package main import "fmt" func main() { for i := range 10 { fmt.Println(10 - i) } fmt.Println("go1.22 起飛!") }

這個新版本的另一個顯著變化是引入了 使用目錄的能力 «供應商« 其中包含工作區相依性。現在命令 你可以使用這個目錄,它是用`創建的去工作供應商` 並在建置指令中使用 當`被設定時-mod` 在 «供應商«,這是目錄存在時的預設值 «供應商» 在工作區中。

需要注意的是,該功能的功能 `去弄模式下的模組外部不再支援 ` 路徑 繼承但是,其他建置命令如 “去建造”和“去測試” 他們將繼續無限期地為遺留的 GOPATH 專案工作。此外,命令 `去模組初始化` 將不再嘗試從其他 « 的設定檔匯入模組需求“販賣” (如 Gopkg.lock)。

Go 1.22 引進了 新包裝 io/不安全 它提供了使用指標和不安全記憶體的功能。該套件提供了在安全和不安全類型之間轉換指標的方法,以及在不進行邊界檢查的情況下執行記憶體複製操作的方法。

工作繼續包括根據 p 結果對編譯器進行最佳化PGO 代碼分析, 就是這樣 現在編譯器使用去虛擬化工具來取代間接調用 具有擴展內聯塊執行的各種方法。啟用 PGO 後,添加的變更將大多數程式的效能提高了 2% 到 14%。

在版本中 使用 Windows、連結或載入庫的程序 去構建 -buildmode=c-存檔 o -buildmode=c-共享 現在可以使用事件日誌 Windows (ETW) API 透過新的套餐 運行時/跟踪 y 追蹤鉤子,它作為 ETW 提供者實現了 Go 事件追蹤收集協議。

在其他突出的變化中:

  • 命令 去測試覆蓋 現在列印沒有自己的測試文件的覆蓋包的覆蓋摘要。
  • 作業系統/執行,新增了定義上下文屬性的功能,可讓您設定執行命令的工作目錄、環境變數和輸入/輸出檔案描述符等值。
  • 優化運行時記憶體管理,使大多數應用程式的效能提高 1-3%,記憶體消耗降低 1%。
  • 埃爾帕克特 網絡/http,該功能已新增 關閉空閒連接 發送給HTTP客戶端,關閉客戶端最近使用過的所有空閒連接
  • 編譯器中加入了呼叫插入機制的改進實驗實作 (GOEXPERIMENT=newinliner),它使用啟發式方法將重要操作與不重要操作分開。
  • 包已新增 » 數學/蘭德/v2 » 標準函式庫,它提供了更一致的 API 並使用更快的演算法來產生偽隨機數。
  • 埃爾帕克特 網/http.ServeMux 新增了在模板中指定方法和遮罩的功能。

最後,如果你是 有興趣了解更多關於它的信息, 您可以查看詳細信息 在下面的鏈接中。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。