英文:
Go: cannot find package "fmt" error
问题
我正在尝试按照Go语言中的一个简单的“Hello, World”应用程序进行操作:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
但是当我构建并运行它时,我收到以下错误信息:
main.go:5:2: 找不到包“fmt”在以下任何位置:
/home/user/go/src/pkg/fmt(来自$GOROOT)
/home/user/gocode/src/fmt(来自$GOPATH)
package test_program
导入运行时:找不到包“runtime”在以下任何位置:
/home/user/go/src/pkg/runtime(来自$GOROOT)
/home/user/gocode/src/runtime(来自$GOPATH)
这是go env
的输出:
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/user/gocode"
GORACE=""
GOROOT="/home/user/go"
GOTOOLDIR="/home/user/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"
希望这可以帮助到你。
英文:
I'm trying to follow a simple Hello, World
application in go:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
But when I build and run it, I get the following error:
main.go:5:2: cannot find package "fmt" in any of:
/home/user/go/src/pkg/fmt (from $GOROOT)
/home/user/gocode/src/fmt (from $GOPATH)
package test_program
imports runtime: cannot find package "runtime" in any of:
/home/user/go/src/pkg/runtime (from $GOROOT)
/home/user/gocode/src/runtime (from $GOPATH)
Here is the ouput of go env
:
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/user/gocode"
GORACE=""
GOROOT="/home/user/go"
GOTOOLDIR="/home/user/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CGO_ENABLED="1"
答案1
得分: 88
未设置 GOROOT - Go 工具知道它们应该在哪里,你很少需要设置它。
你将其设置为 /home/user/go
,除非你在那里构建 Go,否则那里不太可能是找到 fmt 包的正确位置。
英文:
Unset GOROOT - the go tools know where they are supposed to be and you rarely need to set it.
You've set it to /home/user/go
and unless you build go in there that is unlikely to be the right place to find the fmt package.
答案2
得分: 11
不要使用apt-get
来安装[tag:go],只需下载二进制文件并将其解压到您的主目录(或任何目录)。
要在终端中使用go工具
,您需要将export PATH=$PATH:$GOROOT/bin
行添加到您的~/.bashrc
文件中。
英文:
Don't use apt-get
for installing [tag:go], just download the binaries and extract them to your home (or any) directory.
To get the go tool
available in your terminal, you have to add the export PATH=$PATH:$GOROOT/bin
line to your ~/.bashrc
.
答案3
得分: 2
在运行go run case.go
命令失败后,我尝试在一个新的Ubuntu 16.04环境中使用apt安装。
apt install golang
安装完成后,go run case.go
命令将正常运行。
我猜测问题出在你不应该设置GOROOT。
一旦你发现GOROOT不是类似于"/usr/lib/go-{version}"的路径,
那么你已经处于错误的情况中。立即使用unset GOROOT
命令取消设置。将其添加到/etc/profile
、~/profile
或~/.bashrc
等文件中以实现永久生效。
英文:
After failed run go run case.go
command. I try to use apt installation in a new ubuntu 16.04 environment.
apt install golang
after this, the go run case.go
will run as expected.
I guess the problem is you should never set the GOROOT.
Once you find the GOROOT is not something like "/usr/lib/go-{version}",
you already in the wrong situation. use unset GOROOT
immediately. add it to /etc/profile
or ~/profile
or ~/.bashrc
etc. for permanent effection.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论