一个用于管理多个Go工具链版本的安装的工具

446 阅读1分钟

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