go run footer.go 的时候呢, go会依次去GOPATH 和GOROOT设置的对应路径下面找对应的包(目录和文件)
找的时候呢, 会在GoPATH 和GOROOT对应的目录后面再加一层路径 "/src/"哦
---------------------------------------------------------------------------------------------
https://stackoverflow.com/questions/32110524/go-run-cannot-find-package
|
I have a sample project setup based on this article.
This is my directory structure:
goloang/
└── fooproject
└── src
├── foo
│ └── foo.go
└── fooer
└── fooer.go
I have set the GOTPATH
$ echo $GOPATH
/Users/Bharat/Dev/golang/fooproject
I am trying to run foor.go but I get a cannot find package error even though it exists in the location referenced by GOPATH i.e. in src/foo .
This is how I am running it:
$ pwd
/Users/Bharat/Dev/goloang/fooproject/src/fooer
$ go run fooer.go
fooer.go:4:3: cannot find package "foo" in any of:
/usr/local/go/src/foo (from $GOROOT)
/Users/Bharat/Dev/golang/fooproject/src/foo (from $GOPATH)
These are the file contents.
src/foo/foo.go :
package foo
import (
"fmt"
)
func Bar() {
fmt.Println("bar")
}
src/fooer/fooer.go :
package main
import (
"foo"
)
func main() {
foo.Bar()
}
I get the same error when I try to do go build fooer.go .
Where am I going wrong with the project structure?
|
-------------------------------------------------------------------------
|
That might be because of a typo:
goloang
instead of
golang
You have:
$ echo $GOPATH
/Users/Bharat/Dev/golang/fooproject
^^^^^^
$ pwd
/Users/Bharat/Dev/goloang/fooproject/src/fooer
^^^^^^^
|
answered Aug 20 '15 at 6:00
|
|
|
|