尝试在go中使用简单的Hello, World
应用程序:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
但是当我构建并运行它时,我收到以下错误:
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)
以下是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"
答案 0 :(得分:54)
Unset GOROOT - go工具知道它们应该在哪里,你很少需要设置它。
您已将其设置为/home/user/go
,除非您在那里构建,否则不太可能是找到fmt包的正确位置。
答案 1 :(得分:7)
请勿使用apt-get
安装go,只需下载binaries并将其解压缩到您的家(或任何)目录。
要在终端中提供go tool
,您必须将export PATH=$PATH:$GOROOT/bin
行添加到~/.bashrc
。
答案 2 :(得分:0)
在运行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
等中以永久生效。