This is a created article in which the information may have evolved or changed.
There are lots of articles about Gopath, and crossing go on their own. Here's another way to explain Gopath. There are several concepts in the various languages we used to know: System path, official package path, third-party package path, project path.
Okay, there's only two paths in go.
Goroot:go installation path, the official package path is automatically matched according to this setting
Gopath: Working path (in fact, should not be interpreted in Chinese translation, directly said Gopath more appropriate)
Problem: Project path and third-party package path? First: Go is not the concept of the project, only the package. The executable package is just a special one, like we often say the project Gopath can be set multiple, whether it is an executable package, or non-executable package, all should be under a certain $GOPATH/src.
If you do, you won't have a local package.
<!-- lang: cpp -->import "./pathtopackage"
For example, you can put your executable (project) package under a $GOPATH/src, such as $GOPATH/src/app/youpackagedir
So the import of the local package becomes
<!-- lang: cpp -->import "app/yourpackagedir/subpackage"
What's the use of this?
- You can use go to install your child package, which facilitates go build time, if the child package is larger, it is more obvious
- Go code Auto-completion can be used