Go 在错误的目录中查找包

标签 go

我用过 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/

相关文章:

curl - 无法从 Docker 访问 Golang Web 服务器

concurrency - 为什么并发写入的boolean值设置为false后还是true?

go - BigTable 中多列的过滤器

c - 如何调试 C 共享库(用 Go 编写)- 它卡在网络调用上

arrays - 如何将json对象的json数组合并到单个json对象

pointers - 如何在GO中获取指向接口(interface)的指针

json - 在 Golang 中测试 JSON 帖子

go - 为什么我安装的 beego web 框架不起作用?

tree - 向树中添加节点

go - 带有随机 AuthenticationRequired 的签名 URL 结果