Go: 找不到包 “fmt” 错误

huangapple go评论105阅读模式
英文:

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.

huangapple
  • 本文由 发表于 2014年2月2日 20:44:15
  • 转载请务必保留本文链接:https://go.coder-hub.com/21510714.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定