Go 部落格

Go 1.18 Beta 1 釋出,支援泛型

Russ Cox,為 Go 團隊撰寫
2021 年 12 月 14 日

我們剛剛釋出了 Go 1.18 Beta 1,您可以透過訪問 下載頁面 來獲取。

Go 1.18 的正式釋出還需要幾個月的時間。這是 Go 1.18 的第一個預覽版本,讓您可以試用、體驗,並告知我們您遇到的問題。Go 1.18 Beta 1 代表了 Google Go 團隊和全球 Go 貢獻者們付出的巨大努力,我們很期待聽到您的想法。

Go 1.18 Beta 1 是第一個包含 Go 對 使用引數化型別進行泛型程式碼 新支援的預覽版本。泛型是自 Go 1 釋出以來 Go 最重要的變化,也是我們有史以來進行的最大單語言變更。對於任何大型新功能,新使用者發現新 bug 是很常見的,我們也不指望泛型會是例外;請務必謹慎對待。此外,某些細微情況,例如特定型別的遞迴泛型型別,已被推遲到未來的版本。儘管如此,我們知道一些早期使用者對此非常滿意,如果您認為有特別適合泛型的用例,希望您能嘗試一下。我們已經發布了 關於如何開始使用泛型的簡短教程,並且在上週的 GopherCon 大會 上做了相關的演講。您甚至可以在 Go dev 分支模式的 Go playground 上進行嘗試。

Go 1.18 Beta 1 添加了對編寫 基於模糊測試 的內建支援,以自動查詢導致程式崩潰或返回無效答案的輸入。

Go 1.18 Beta 1 添加了一個新的“Go 工作區模式”,允許您同時處理多個 Go 模組,這是大型專案的重要用例。

Go 1.18 Beta 1 包含一個擴充套件的 go version -m 命令,現在該命令會記錄編譯標誌等構建詳細資訊。程式可以使用 debug.ReadBuildInfo 查詢自身的構建詳細資訊,並且現在可以使用新的 debug/buildinfo 包從其他二進位制檔案中讀取構建詳細資訊。此功能旨在成為任何需要為 Go 二進位制檔案生成軟體物料清單 (SBOM) 的工具的基礎。

今年早些時候,Go 1.17 為 x86-64 系統添加了一個新的基於暫存器的呼叫約定,以提高 Go 程式碼的速度。Go 1.18 Beta 1 將此功能擴充套件到了 ARM64 和 PPC64,從而實現了高達 20% 的速度提升。

感謝所有為此 Beta 版本做出貢獻的人,特別是 Google 團隊多年來一直在不懈努力,讓泛型成為現實。這是一條漫長的道路,我們對結果非常滿意,也希望您喜歡它。

請參閱 Go 1.18 的完整 草擬版本說明 以獲取更多詳細資訊。

一如既往,特別是對於 Beta 版本,如果您發現任何問題,請 提交 issue

希望您喜歡測試 Beta 版本,並祝您 2021 年剩餘時間愉快。節日快樂!

下一篇文章:Go 1.18 的兩個新教程
上一篇文章:Go 的十二年
部落格索引