日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Go语言泛型工具go2go

發布時間:2023/12/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go语言泛型工具go2go 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

Go語言從1.18開始,初步支持泛型。要探索Go是如何實現泛型的,就需要使用工具go2go,這里介紹下如何編譯該工具。

正文

go2go是以工具的形式來使用的,可通過go tool go2go <subcommand>來執行命令。
Go的工具鏈由Go語言編寫,所以需要提前安裝GO,并配置好GOPATH等。

下載代碼

代碼在Go語言源碼的dev.go2go分支,該分支于2020年發布,現在已經不再維護。
代碼量偏大,如果網絡不佳,可以考慮通過gitee來中轉。

git clone https://github.com/golang/go -b dev.go2go

編譯代碼

下載完成就可以直接編譯了,Windows和Linux都可以,這里我們以Linux為例。
如果服務器上沒有gcc工具,又不需要cgo功能,可設置CGO_ENABLED=0,否則在編譯時會報找不到gcc的錯誤。
開始編譯。

cd go/src CGO_ENABLED=0 ./all.bash... ALL TESTS PASSED --- Installed Go for linux/amd64 in /root/sty/go Installed commands in /root/sty/go/bin *** You need to add /root/sty/go/bin to your PATH.

如果一切順利,編譯結束后就會生成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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。