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

















 
 
 














 
 
 
 