go: 找不到 GOROOT 目录:c:\go

go: cannot find GOROOT directory: c:\go

我将 the Go distribution 解压缩到 d:\dev\go,将 d:\dev\go\bin 添加到我的路径,创建了一个文件 d:\projects\hello\hello.go 并将 GOPATH 设置为 d:\projects\hello。 运行 go build hello.go 告诉我:

go: cannot find GOROOT directory: c:\go

现在several different places强烈建议不要设置GOROOT,设置GOPATH应该就可以了

我应该反对这个建议还是我遗漏了什么?

我将 GOROOT 设置为指向该目录的内容:

AUTHORS      PATENTS      api          favicon.ico  misc         src
CONTRIBUTORS README       bin          include      pkg          test
LICENSE      VERSION      doc          lib          robots.txt

这是包含 src、bin、doc、lib 等的目录...

摘自 Dave Cheney 的 You don’t need to set GOROOT, really 文章:

There are only two cases that where you may have to set a $GOROOT environment. These are both described in the installation page on the golang.org website. For completeness I will recap them here

  • You are a Linux, FreeBSD or OS X user using the the zip or tarball binary downloads from the golang.org website. These binaries have a $GOROOT value of /usr/local/go and recommend you unpack them into that location. If you choose not to do this, then you must set $GOROOT to the location you chose.
  • You are a Windows user using the zip binary download from the golang.org website. These binaries have a $GOROOT value of C:\Go. If you place Go somewhere else on your system then you must set $GOROOT to the location you chose.

(如果您想了解对 GOROOT 造成混淆的历史,本文的其余部分是一个很好的阅读,总结是由于过时的指令主要来自 pre-Go1。)

因此,如果您使用预构建的 Go 二进制文件, 您想要将它放在它“想要”的地方以外的地方,那么您需要 GOROOT。否则(即,如果您从源代码构建 Go,或者如果您将二进制分发版放在默认位置)您不需要或不想设置 GOROOT(上面的文章给出了一些不这样做的原因)。

如果您不确定,使其“正确”的最简单方法是首先设置任何其他GOPATH。然后 运行 go env 看看它说的是什么;如果显示 GOROOTGOPATH 的条目合理,那么您就完成了;仅设置变量以在错误时覆盖它。

可能是缓存问题。

对我来说,我重新打开了 MinGW(我通过 pacman 在 msys2 中安装了 go),它成功了。

安装好Go lang后,GOROOT就是安装的根目录。

我在WindowsC:\目录下对Go Lang二进制文件进行爆破,我的GOROOT应该是C:\go。 如果使用 Windows 安装程序安装,它可能是 C:\Program Files\go(或 C:\Program Files (x86)\go,对于 64 位软件包)

 GOROOT = C:\go