原因
当前使用的go版本与项目的go.mod所用的go版本不一致导致
解决方案
使用Go 版本管理工具进行解决,这里推荐 g
g是一个适用于 Linux、macOS 和 Windows 的命令行工具,提供Go环境多个版本的便捷管理和切换。
g 安装和使用
特征
- 支持列出可供安装的 Go 版本
- 支持列出已安装的 Go 版本
- 支持本地安装多个版本的Go
- 支持卸载已安装的 Go 版本
- 支持在已安装的 Go 版本之间自由切换
- 支持清除包文件缓存
- 支持自动更新软件(>= 1.5.0)
- 支持软件干净卸载(>= 1.5.0)
安装
自动安装
-
Linux/macOS(bash/zsh)
# It is recommended to clear the `GOROOT`, `GOBIN`, and other environment variables before installation. $ curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash $ echo "unalias g" >> ~/.bashrc # Optional. If other programs (such as `git`) have used `g` as an alias. $ source "$HOME/.g/env" -
Windows(pwsh)
$ iwr https://raw.githubusercontent.com/voidint/g/master/install.ps1 -useb | iex
手动安装(适用于Linux/macOS)
-
创建目录
g(推荐~/.g:) -
从releases下载二进制压缩文件并将其解压到
bin该g目录的子目录中(即~/.g/bin)。 -
将必要的环境变量写入
~/.g/env文件中。$ cat >~/.g/env <<'EOF' #!/bin/sh # g shell setup export GOROOT="${HOME}/.g/go" export PATH="${HOME}/.g/bin:${GOROOT}/bin:$PATH" export G_MIRROR=https://golang.google.cn/dl/ EOF -
导入
~/.g/envshell 环境配置文件(例如~/.bashrc,~/.zshrc...)。$ cat >>~/.bashrc <<'EOF' # g shell setup if [ -f "${HOME}/.g/env" ]; then . "${HOME}/.g/env" fi EOF -
启用环境变量。
$ source ~/.bashrc # source ~/.zshrc
手动安装(适用于 Windows PowerShell)
-
创建目录:
mkdir ~/.g/bin -
从releases下载Windows版本的二进制压缩文件,解压后放入~/.g/bin目录下。
-
默认的二进制文件名为
g.exe,如果您已经使用了gGit 命令的缩写,则可以更改g.exe为其他名称,例如gvm.exe. -
运行命令
code $PROFILE,该命令将使用VSCode打开默认的PowerShell配置文件。 -
将以下内容添加到默认的PowerShell配置文件中:
$env:GOROOT="$HOME.g\go" $env:Path=-join("$HOME.g\bin;", "$env:GOROOT\bin;", "$env:Path") -
再次打开PowerShell终端,就可以使用
gorgvm命令了。
用法
查询当前可用的稳定版 Go 进行安装:
$ g ls-remote stable
1.19.10
1.20.5
要安装特定版本的 Go(例如 1.20.5):
$ g install 1.14.7
Downloading 100% [===============] (92/92 MB, 12 MB/s)
Computing checksum with SHA256
Checksums matched
Now using go1.20.5
查询已安装的 Go 版本列表:
$ g ls
1.19.10
* 1.20.5
列出所有可供安装的 Go 版本:
$ g ls-remote
1
1.2.2
1.3
1.3.1
...
1.19.10
1.20rc1
1.20rc2
1.20rc3
1.20
1.20.1
1.20.2
1.20.3
1.20.4
* 1.20.5
要切换到另一个已安装的 Go 版本:
$ g use 1.19.10
go version go1.19.10 darwin/arm64
要卸载特定已安装的 Go 版本:
$ g uninstall 1.19.10
Uninstalled go1.19.10
要清除 Go 安装的包文件缓存:
$ g clean
Remove go1.18.10.darwin-arm64.tar.gz
Remove go1.19.10.darwin-arm64.tar.gz
Remove go1.20.5.darwin-arm64.tar.gz
查看g自身版本信息:
g version 1.5.0
build: 2023-01-01T21:01:52+08:00
branch: master
commit: cec84a3f4f927adb05018731a6f60063fd2fa216
要更新g软件本身:
$ g self update
You are up to date! g v1.5.0 is the latest version.
要卸载g软件本身:
$ g self uninstall
Are you sure you want to uninstall g? (Y/n)
y
Remove /Users/voidint/.g/bin/g
Remove /Users/voidint/.g