Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Go: cannot find package "fmt" error

Tags:

go

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"
like image 550
CallumVass Avatar asked Feb 02 '14 12:02

CallumVass


3 Answers

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.

like image 186
Nick Craig-Wood Avatar answered Sep 28 '22 21:09

Nick Craig-Wood


Don't use apt-get for installing 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.

like image 23
Salah Eddine Taouririt Avatar answered Sep 28 '22 20:09

Salah Eddine Taouririt


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.

like image 28
Bing Dennis Avatar answered Sep 28 '22 20:09

Bing Dennis