gotv (Go工具链版本)
gotv是一个提供管理多个官方Go工具链版本的工具。 它有点像gvm的重新实现,但有一个不同的命令集。 每个Go工具链版本都是从Go的git仓库中建立的。
这个工具主要是为我在编写Go 101书籍时检查官方Go工具链版本的差异而建立的。
安装
安装gotv需要一个新的Go工具链版本:
go install go101.org/gotv@latest
使用方法
大多数gotv 命令的格式如下:
gotv ToolchainVersion [go-arguments...]
在运行第一条这样的命令时,Go的git仓库将被克隆(需要几分钟才能完成)。
ToolchainVersion 可能是
- 一个Go发布版本,比如
1.17.13,1.18,1.19rc1, 分别表示Go git仓库中的发布标签go1.17.13,go1.18,go1.19rc1。 :tip, 表示Go git仓库中本地最新的master分支。:1.N, 表示 Go git 仓库中本地最新的release-branch.go1.N分支。
例子:
$ gotv 1.17.12 version
[Run]: $HOME/.cache/gotv/tag_go1.17.12/bin/go version
go version go1.17.12 linux/amd64
$ gotv 1.18.3 version
[Run]: $HOME/.cache/gotv/tag_go1.18.3/bin/go version
go version go1.18.3 linux/amd64
$ cat main.go
package main
const A = 3
func main() {
const (
A = A + A
B
)
println(A, B)
}
$ gotv 1.17.12 run main.go
[Run]: $HOME/.cache/gotv/tag_go1.17.12/bin/go run main.go
6 6
$ gotv 1.18.3 run main.go
[Run]: $HOME/.cache/gotv/tag_go1.18.3/bin/go run main.go
6 12
其他gotv 命令:
gotv fetch-versions
gotv list-versions
gotv cache-version ToolchainVersion [ToolchainVersion ...]
gotv uncache-version ToolchainVersion [ToolchainVersion ...]
gotv pin-version ToolchainVersion
gotv unpin-version