開發團隊釋出Go 1.22版本,這個版本除了在語言層面有更新,修正了長久存在的for迴圈問題之外,也強化了效能並且擴充函式庫,透過改進記憶體和設定檔指引最佳化(Profile-Guided Optimization,PGO)使得程式執行更加高效。

Go 1.22語言變更主要是解決for迴圈中變數共享的問題,在之前的Go版本中,在for迴圈中啟動的goroutine如果直接使用迭代變數,可能會因為變數共享而出現非預期的結果。這個問題已經存在一段時間,也是Go新手在編寫程式的時候常會遇到的陷阱,現在這個問題終於在Go 1.22被解決了,迭代變數在每次迭代時都能被正確的捕獲,並在goroutine內部使用,減少開發者寫出臭蟲程式碼的可能性。

另一個語言變更則是Go 1.22加入整數的範圍迭代支援,這是一個新的語言功能,該功能讓固定次數的迭代操作更加直覺且方便。這兩個變更進一步改善了Go的安全性與易用性。

新版Go的效能也有改進,Go的執行環境記憶體最佳化,將CPU效能提高約1%到3%,同時也減少大多數Go程式的記憶體開銷約1%。在Go 1.21中,Go編譯器新增設定檔指引最佳化功能,設定檔指引最佳化會根據程式實際運作配置來最佳化編譯,進而提高執行效率,在Go 1.22中新增改進的去虛擬化功能,允許更多介面方法呼叫的靜態分派(Static Dispatch)。啟用設定檔指引最佳化的多數程式都會有2%到14%的效能提升。

開發者也能夠在這個版本用到新的函式庫像是math/rand/v2套件,其提供更簡單、一致的API,提供高品質且快速的偽隨機生成演算法(Pseudo-Random Generation Algorithm),對於需要隨機生成功能的應用程式特別好用。

熱門新聞

Advertisement