编译:版本"go1.9"不匹配go工具版"go1.9.1"

sh0*_*731 16 go

当我试图运行我得到的示例helloworld代码时,我收到此错误.

compile: version "go1.9" does not match go tool version "go1.9.1"
Run Code Online (Sandbox Code Playgroud)

我的电脑已经去了1.9.1.错误意味着什么,我该如何解决?

ksr*_*srb 19

如果您使用的OSX自制安装可能需要设置$GOROOT你的.bashrc,.zshrc等:

export GOROOT=/usr/local/opt/go/libexec
Run Code Online (Sandbox Code Playgroud)

今天早上我从1.9 - > 1.9.1更新时遇到了同样的错误,虽然根据几个帖子$GOROOT不应该设置,我直到今天才设置它.这可能是个错误?


Aar*_*ler 17

这是GOROOT环境变量与go命令的默认路径之间的不匹配。一个或另一个需要改变;需要更改的那个取决于您计算机上的特定设置。您可以通过使用首选方法将 Go 更新到最新版本来确定这一点,运行which go(在 Linux/macOS/BSD 上)或where go(在 Windows 上),然后检查列出的哪些文件具有较新的时间戳。

Linux/macOS/BSD

  • 要更改GOROOT以匹配go命令的默认路径,请运行type go并去掉/bin/go末尾的部分以生成包含 Go 安装的目录路径。然后,将它添加到您的.bashrc或其他适当的 init 文件中,如下所示:

export GOROOT=/path/to/go-installation

  • 要改为更改go命令路径以匹配您的GOROOT,请将其添加到 init 文件的底部:

export PATH="${GOROOT}/bin:${PATH}"

视窗

  • 要更改GOROOT以匹配go命令的默认路径,请运行where go输出的第一行,并\bin\go.exe在末尾去掉部分。然后,转到“设置”中的“编辑系统环境变量”,单击“环境变量...”,找到“GOROOT”变量并编辑以读取您之前创建的路径。

  • 要改为更改go命令路径以匹配您GOROOTecho %GOROOT%\bin. 然后,进入设置中的“编辑系统环境变量”,点击“环境变量...”,在底部窗格中找到“路径”行,点击新建,输入之前创建的路径,最后单击“上移”直到它位于顶部。

全部

您需要打开一个新的命令提示符才能看到效果。


小智 14

在 mac OS 中,如果您在没有brew的情况下下载并安装了go软件包,运行brew更新命令将导致出现此问题,要解决此问题,您可以执行以下操作:brew uninstall --ignore-dependencies go从brew卸载go将解决问题

  • 这应该得到更多的支持。当我按照“Learning Go”一书中的说明学习 Go 时,我就遇到了这种情况,然后我进入了 Linting 和 Vetting 部分;工具“golangci-lint”是使用brew安装的,或者至少是你被告知要做的。这毁掉了我的 Go 设置。按照穆罕默德的建议卸载,对我来说完美修复了它。我只使用 Goland 和基本的 Linter,工作得很好。额外的 linter 不值得这么麻烦。 (2认同)

Han*_*ver 12

如果您使用自制的mac,只需运行: brew cleanup

清除所有遗留包,这解决了我的问题.


saj*_*med 8

对于 M1 Mac,以下步骤对我有帮助!

从 VSCode 终端检查并从系统终端检查。

从 vscode 终端

user@mac % which go
/usr/local/go/bin/go
Run Code Online (Sandbox Code Playgroud)

从我的 Mac 终端

user@mac % which go
/opt/homebrew/bin/go
Run Code Online (Sandbox Code Playgroud)

与 go env 显示的 GOROOT 对应的,保留它并删除另一个

user@mac % go env GOROOT
/usr/local/go
Run Code Online (Sandbox Code Playgroud)

在这种情况下

rm -rf /opt/homebrew/bin/go
Run Code Online (Sandbox Code Playgroud)

关闭并重新加载 vscode 和终端


Sco*_*and 5

当您忘记删除以前的 golang 安装时会发生此错误...只需删除其目录...因此请确定 go 安装位置...关于 linux 问题

type go
Run Code Online (Sandbox Code Playgroud)

典型输出是

go is hashed (/usr/local/go/bin/go)
Run Code Online (Sandbox Code Playgroud)

所以只需删除它的祖父目录( go install dir 不仅仅是 go 二进制文件)

sudo rm -rf /usr/local/go   #  NOTE this is not /usr/local/go/bin/go
Run Code Online (Sandbox Code Playgroud)

现在只需安装 go 就可以了