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相关推荐
- 从软件工程看,语言只是工具
"软件工程"是什么?代码.方法.过程.工程与组织的关系是什么?语言与工具在哪一个层次?看下面一幅图一目了然: 从这个模型中可以看到,在"程序"与"方法 ...
- c++整理程序 dev_C编程从入门到实践:C语言开发工具详解(2)
DEV C++是一款经典的轻量级C语言开发工具,其安装大小只有几十兆,并且具有图形视图界面,操作比较容易.在DEV C++编码界面中可以使用复制和粘贴等命令,这提高了开发效率. 2.3.1安装DEV ...
- 多语言制作工具(2013-01-24更新,支持VS2005、2008、2010、2012)(已开源)
前一段时间,制作了一个多语言资源文件制作工具,现在把这个工具集成到VS2005.VS2008,vs2010中,以增加VS自身资源编辑界面,对多资源编辑的麻烦,简化多语言资源文件的制作. 这个插件是和V ...
- 【Elasticsearch】如何使用 Elasticsearch 6.2 搜索中文、日语和韩语文本 - 第 3 部分:语言检测工具
1.概述 翻译:https://www.elastic.co/cn/blog/how-to-search-ch-jp-kr-part-3 这是我有关中文.日语和韩语文本搜索的系列文章的第 3 部分.如 ...
- Pandoc —— 标记语言转换工具(中文乱码问题)
今次毕业设计,来个逼格高的,用 latex 编写.谁曾想,学院首先要收一份 word 版的.辣么多的 latex 公式如何转呀. Pandoc 是由 John MacFarlane 开发的标记语言转换 ...
- 常用标记语言及其工具
0. Markdown markdownpad typora 1. pandoc:标记语言转换器 pandoc 是由 John MacFarlane开发的标记语言转换工具,可实现不同标记语言间的格式转 ...
- C语言开发工具(编译器|IDE)推荐
常用的C语言开发工具有很多,每个开发工具所支持的库函数和对标准的实现都有差异.不过,对于初学者,可以忽略这些细节,选择一款使用广泛.上手容易的开发工具才是王道. Windows平台下推荐VC6.0或V ...
- Go 语言开发工具 LiteIDE X36 发布
Go 语言开发工具 LiteIDE X36 发布,新增了编辑器路径导航工具栏,重构了 QuickOpen 插件,优化了快速打开文件和目录功能. ### 2019.03.15 Ver X36 * Lit ...
- L1D1:嵌入式Linux C语言开发工具及基础命令
嵌入式Linux C语言开发工具及基础命令 一.ubuntu环境搭建 请自行准备VMware workstation15安装包 及 ubuntu18.04.iso镜像文件.可参考链接:VMware W ...
- EPLAN_语言翻译工具的使用
语言翻译工具的使用 一.方法一 1.打开EPLAN,选择工具→脚本→加载,选择language_v1.1.cs: 2.在EPLAN主界面快捷栏中右键,选择导入: 3.选择Language_v1.1.x ...
最新文章
- php 怎么分布式,php分布式怎么部署
- 用split分割文件和数据(笔记)
- [20150409]只读表空间与延迟块清除.txt
- python3.6.4安装教程-python3.6.4如何安装到树莓派3代
- mina android 服务器,MINA框架----------android客户端与服务器端
- 理解IDS的主动响应机制
- HDU1010 Tempter of the Bone DFS+剪枝
- Linux网络编程 之 IO多路复用poll(九)
- Linux安装配置apache
- 数据库---事务的隔离级别
- django-验证码
- Swift UIColor 添加从十六进制值初始化的扩展
- 无法连接 Plugins Market 失效的日子
- bash复杂脚本解释
- ibm各种服务器visio图标vss文件,visio网络图标库vss大全
- 营业执照号码生成规则
- Pycharm异常:selenium.common.exceptions.WebDriverException: Message: ‘geckodriver‘ execut运行项目无法打开火狐浏览器
- 蓝牙抓包工具使用教程
- 单细胞测序的marker基因
- #9733;关于人类体质弱化的分析