Go 1.17正式發(fā)布,都有哪些新功能?
Go 1.17 正式發(fā)布,此版本的編譯器采用了一種新的函數(shù)參數(shù)和結(jié)果傳遞方式。官方稱此次改進(jìn)將 Go 程序的性能提升了大約 5%,并將 amd64 平臺的二進(jìn)制包大小減少了大約 2%,未來還計劃支持更多平臺。
Go 1.17 增加了對 Windows 上 64 位 ARM 架構(gòu)的支持,讓 Go 開發(fā)者能夠在更多設(shè)備上原生運行 Go。
另外,新版本還增加了 pruned module graphs 功能。官方對此功能的描述為,當(dāng) Modules 在其go.mod文件中指定了 go 1.17或更高版本,其 module graph 只包括其他 Go 1.17 模塊的直接依賴,而不是其全部的橫向依賴。這將有助于避免 go.mod 為其他不相關(guān)的依賴下載或讀取文件,從而在日常開發(fā)中節(jié)省時間。
語言方面,Go 1.17 包含三個針對語言特性的改進(jìn):
- 支持從 slice (切片)到數(shù)組指針的轉(zhuǎn)換
- unsafe.Add:unsafe.Add(ptr, len)將 len 添加 ptr 并返回更新的指針unsafe.Pointer(uintptr(ptr) + uintptr(len))
- unsafe.Slice : 對于*T 類型的 ptr 表達(dá)式,unsafe.Slice(ptr, len) 返回一個[] T 類型的切片,其底層數(shù)組從 ptr 開始, 其長度和容量為 len