我用过 Windows msi在我的机器上安装 Go,但是当我尝试运行一个简单的 Hello World
时,如下所示:
go run hello.go
我收到以下错误:
hello.go:3:8: cannot find package "fmt" in any of: C:\Go\src\pkg\fmt (from $GOROOT)
在GOROOT
中确实找不到这个包,因为它安装在以下目录中:
C:\Go\src (missing the \pkg)
GOROOT
设置为 C:\Go
(自动),C\Go\bin
添加到 PATH
我的 GOPATH
设置为我的工作区,但这似乎没有任何改变。
如何解决这个问题?我应该将所有包复制到 C:\Go\src\pkg
吗?
我做错了什么吗?
编辑
应@Volker 的要求,这是 go env
的输出:
set GOARCH=amd64
set GOBIN=
set GOCHAR=6
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=D:\aage\gocode
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set CC=gcc
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0
set CXX=g++
set CGO_ENABLED=1
最佳答案
检查你的 %PATH%
:我安装了多个 go 版本,我看到:
fmt
在%GOROOT%(1.3)\src\pkg
:C:\prgs\go\go1.3.2.windows-amd64\src\pkg\fmt\
fmt
在%GOROOT%(1.4)\src
:C:\prgs\go\go1.4.windows-amd64\src\fmt\
资源已经重组。
参见“Go 1.4 src/pkg → src
”。
这意味着如果您尝试使用 go 1.3 进行编译,而 GOROOT
指向 Go1.4 安装,您可能会看到该错误。
如果这不起作用,请卸载并使用 go1.4.windows-amd64.zip
存档:将它解压缩到任何你想要的地方,将 GOROOT
指向它,添加 GOROOT/bin
一切都应该工作。
关于Go 在错误的目录中查找包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27712244/