go-多版本切换

11 阅读1分钟

1 概述

我们经常维护多个项目,而每个项目用的go版本可能不一样,这样在本地调试时,就需要依赖多个版本,同时我们也需要一个方法来在这些版本中进行切换。

2 安装

2.1 获取GOROOT

假设你本地已经安装了某个版本,比如说 1.20,此时:

echo $GOROOT

输出

/Users/someone/go/go1.20

把这个记住。

2.2 安装新版本

go语言中文网下载相关安装包,这里以Mac为例,我要安装的是 1.22.7 版本:

wget https://studygolang.com/dl/golang/go1.22.7.darwin-amd64.tar.gz

解压

tar -zxvf go1.22.7.darwin-amd64.tar.gz

会在本地产生一个 go 目录。 将其放置在 $GOROOT 目录下:

mv go /Users/someone/go/go1.22.7

此时,$GOROOT目录下就有 go1.20 和 go1.22.7 两个版本目录了。

3 设置

将$GOROOT设置成go需要执行的公共路径,然后通过软链接将对应版本的go指向这个公共路径。

3.1 编辑环境变量

随便选择一个公共文件名称,比如goroot,然后编辑环境变量文件,我这里是编辑的 ~/.bash_profile 文件

vi ~/.bash_profile

#添加以下内容

export GOROOT=/Users/someone/go/goroot
export PATH=$GOROOT/bin:$PATH

保存退出,通过source命令让其生效。

    source ~/.bash_profile

3.2 链接

通过软链接命令,将某个版本的文件软链接到某个公共文件上:

ln -s /Users/someone/go/go1.20 /Users/someone/go/goroot
#此时/Users/someone/go/ 目录下将生成 goroot 文件

go version
输出
go version go1.20 darwin/arm64

3.3 切换

rm /Users/someone/go/goroot
ln -s /Users/someone/go/go1.22.7 /Users/someone/go/goroot

go version
#输出
go version go1.22.7 darwin/amd64

至此,我们就通过一个公共文件软链接的方式达到了切换版本的目的。