Hello,
I am trying to establish an architecture with go as suggested here (others are quite similiar): https://github.com/golang-standards/project-layout
So I have my_project_folder/cmd/app/main.go
and I run my application from the main folder with go run cmd/app
. So far so good.
Now I want to break my code in several pieces for internal usage, so I create:
-
my_project_folder/internal/pkg/libone
containing several go - files, all of them are declared to be inpackage libone
. - Equivalently I also create
my_project_folder/internal/pkg/libtwo
also containing some go - files and declared aslibtwo
.
So I end up with the following architecture / structure (excerpt):
my_project_folder/cmd/app/main.go
my_project_folder/internal/pkg/libone/*.go
my_project_folder/internal/pkg/libtwo/*.go
The question is how would I import my two libraries in my main.go
?
One working option is to use relative paths (../..
). But I already read that this is bad practice in the go-universe. Another, the better, option would be to use “remote paths”, right?
So even though I do not use github, I try to change the import in my main.go to:
import github.com/bs_user/my_project_folder/internal/pkg/libone
.
But this crashes… Is this because I have no mods.go file? Or do I still have to set my GOPATH? (I thought this is not needed anymore?)
Is there an explicit documentation on how remote paths are resolved? And how can I avoid that if somebody enters git get no unwanted repository from github is pulled because I just used a fake name?
Thanks in advance and Sorry for the big confusion… I would not have asked If I were successful in searching