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配置项说明