Go语言泛型工具go2go
背景
Go語言從1.18開始,初步支持泛型。要探索Go是如何實現泛型的,就需要使用工具go2go,這里介紹下如何編譯該工具。
正文
go2go是以工具的形式來使用的,可通過go tool go2go <subcommand>來執行命令。
Go的工具鏈由Go語言編寫,所以需要提前安裝GO,并配置好GOPATH等。
下載代碼
代碼在Go語言源碼的dev.go2go分支,該分支于2020年發布,現在已經不再維護。
代碼量偏大,如果網絡不佳,可以考慮通過gitee來中轉。
編譯代碼
下載完成就可以直接編譯了,Windows和Linux都可以,這里我們以Linux為例。
如果服務器上沒有gcc工具,又不需要cgo功能,可設置CGO_ENABLED=0,否則在編譯時會報找不到gcc的錯誤。
開始編譯。
如果一切順利,編譯結束后就會生成go可執行文件以及工具(包括go2go)。
# ls pkg/tool/linux_amd64/ addr2line api asm buildid cgo compile cover dist doc fix go2go link nm objdump pack pprof test2json trace vet可以看到目錄下有go2go工具,可以直接使用該二進制文件,也可以通過go tool go2go來調用。如果要通過go tool go2go來調用,則需要把新編譯出的go可執行文件加入到PATH中。
驗證
創建代碼文件GenericsSimple.go2。
package mainimport "fmt"func Print[T any](s []T) {for _, v := range s {fmt.Println(v)} }func main() {Print([]int{1, 3})Print([]string{"Book", "Wendy"}) }使用go2go工具來生成代碼。
# go tool go2go GenericsSimple.go2執行完成后,就會在同一目錄,生成名為GenericsSimple.go的代碼文件,該文件,就是Go編譯器將原泛型相關代碼轉換成的最終代碼文件。
# ls GenericsSimple.go GenericsSimple.go2查看該文件,感受下Go語言泛型是如何實現的吧。
引用
https://go.dev/doc/install/source
總結
以上是生活随笔為你收集整理的Go语言泛型工具go2go的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 神经网络实战网盘资源,神经网络实战项目
- 下一篇: mongo配置项说明