概述
因为有很多个项目要维护,同时因为这些项目的历史背景不一,有些可能是自己写的,有些是从别人那接过来的,所以,目前面临的一个问题就是 Go 版本可能不一致,但是,你又不敢冒冒然地就升级成一致的版本,毕竟测试的覆盖度还不足以给我信心这么做。
所以,当前阶段我还是先维持使用项目指定的 Go 版本,所以就有了在本地使用多个 Go 版本的需求。本文虽然说的是 Mac 环境,但是,实际上在 Linux 环境应该也是想通的。
通过 brew 管理多套环境
[root@liqiang.io]# brew install go # 1.17
[root@liqiang.io]# brew install go@1.15
[root@liqiang.io]# brew unlink go
[root@liqiang.io]# brew link go@1.15
指定版本运行代码
不想设置全局的固定版本,你也可以通过指定路径来运行不同的版本。
但是需要注意 GOPATH 这个环境变量,如果你不同版本的 Go 使用同个 GOPATH 的话,高版本一旦更新了依赖的库,那么低版本的就没法用了,很重要。
[root@liqiang.io]# GOPATH=/Users/liqiang.io/Applications/srcs/gopath1.14 \
/Users/liqiang.io/Applications/srcs/go1.14.6/bin/go test cmd/server/main*
Goland 设置多版本
Goland 默认支持不同的 Go 版本,而且还可以帮你下载:
图 1:打开设置页面 |
---|
图 2:选择 Go 的版本 |
---|
如果你觉得还不够,那么可以让 Goland 帮你下载一个:
图 3:下载按钮 |
---|
图 4:版本选择 |
---|
各种版本任你选择。
GOPATH
但是,同样别忘记了切换了 Go 版本之后要选择不同的 GOPATH:
图 5:设置 GOPATH |
---|
VSCode
VSCode 支持多版本 Go 其实也很简单,和 Goland 差不多,但是不同的是,VSCode 常用的方式都是通过配置文件来管理:
- 在项目目录下创建
.vscode
目录 - 在
.vscode
目录下创建settings.json
文件
[root@liqiang.io]# cat settings.json
{
"go.goroot": "/home/liqiang/software/goroot/go1.18",
"go.gopath": "/home/liqiang/software/gopath/gopath1.18",
"go.toolsEnvVars": {
"GO111MODULE": "on",
"GOROOT": "/home/liqiang/software/goroot/go1.18",
"GOPATH": "/home/liqiang/software/gopath/gopath1.18",
},
"terminal.integrated.profiles.linux": {
"zsh": {
"path": "/usr/bin/zsh",
"env": {
"GOROOT": "/home/liqiang/software/goroot/go1.18",
"GOPATH": "/home/liqiang/software/gopath/gopath1.18",
}
}
},
"terminal.integrated.defaultProfile.linux": "zsh"
}