Go:找不到包“fmt”错误

时间:2014-02-02 12:44:16

标签: go

尝试在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"

3 个答案:

答案 0 :(得分:54)

Unset GOROOT - go工具知道它们应该在哪里,你很少需要设置它。

您已将其设置为/home/user/go,除非您在那里构建,否则不太可能是找到fmt包的正确位置。

答案 1 :(得分:7)

请勿使用apt-get安装,只需下载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等中以永久生效。