質問

I'm writing an API using Go and its net/http stdlib module and i have some utils code in a directory named utils. But when i import them in main, Go does not find the packages. The root cause is apparently the fact that Go packages have to be saved in $GOPATH/src/. So i wanted to know if there was a way to import local packages and save them in the same folder as the main package.

I'm following the Github Directory Structure so my $GOPATH looks like that.

$GOPATH/src/
   |___github.com/
       |___user/
           |___repository/
               |___main.go
               |___utils/
                   |___core.go
                   |___factory.go

As the utils directory is really tied to the app, it would be really bad for me to save it as a different Go app in $GOPATH/src. And apart from that, imagine the moment when i will want to push my code on Github. Here it's only 2 repositories but if it was 6 i would need 6 private repos for really related and tied parts of a single application.

役に立ちましたか?

解決

(Documenting an answer as it looks unanswered at first glance)

The package declaration on both files should be package utils and they should be imported with:

import "github.com/user/repository/utils"

Its also possible to make sub-packages (standard library io package has io/ioutil) if you really want to separate each code file as separate packages.

import "github.com/user/repository/utils"
import "github.com/user/repository/utils/sub"

The local directory structure would be:

$GOPATH/src/
   |___github.com/
       |___user/
           |___repository/
               |___main.go
               |___utils/
                   |___core.go
                   |___sub/factory.go

(Answer details posted in comment by @phndiaye)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top