Go:找不到包"fmt"错误

Cal*_*ass 27 go

我想Hello, World在go中关注一个简​​单的应用程序:

package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello World!")
}
Run Code Online (Sandbox Code Playgroud)

但是当我构建并运行它时,我收到以下错误:

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)
Run Code Online (Sandbox Code Playgroud)

这是输出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"
Run Code Online (Sandbox Code Playgroud)

Nic*_*ood 62

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

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

  • 要取消当前会话的GOROOT,请键入"unset GOROOT".但是,您可能想永久取消它; 在这种情况下,只需从设置它的配置文件中删除设置变量的行(例如,/ etc/profile或〜/ .bash_profile) (5认同)
  • 可能值得一提的是,如果你在非标准位置安装Go,你应该*设置GOROOT - 最好是阅读整篇[博文](http://dave.cheney.net/2013/06/14/you-dont-need-to-set-goroot-really)了解"标准位置"是什么,因为它取决于你安装Go的方式. (4认同)
  • 我如何取消GOROOT? (2认同)

tar*_*lah 7

不要apt-get用于安装,只需下载二进制文件并将其解压缩到您的家(或任何)目录.

go tool在终端中使用,您必须将export PATH=$PATH:$GOROOT/bin线路添加到您的终端~/.bashrc.

  • 我在这里同意你的意见,但你应该解释*为什么*不要使用apt-get:Go开发速度很快,Linux发行版很可能在他们的存储库中有过时的版本. (2认同)