Having a .net background, I'm currently trying to adapt my first go project to a more typical go project structure ( similar to this). What I don't understand is how to avoid dependencies accidentally ending up in packages they don't belong to.
Suppose I have a project consisting of two parts, an application named foo
and a model.
foo
Applications may depend on http, logging, metrics, etc. libraries. The project might look like this:
├── go.mod ├── go.sum ├── model │ ├── person.go │ └── address.go ├── cmd │ └── runfoo │ └── main.go └── foolib └── applicationlogic.go
But since the module files are in the root directory, go get github.com/httplib
will make httplib
available for that model as well. This method has disadvantages:
httplib
in a model even though it definitely doesn't belong there. go.mod
, I can't figure out which dependencies are for the model and which are for the application. Now, I could use very fine-grained modules and add go.work
files for development, but this feels difficult to maintain (and not aligned with the reference structure).
How to avoid making dependencies available to all packages? Is this wise?
How to avoid making dependencies available to all packages [? ]
You can't (use a module).
[...]Is this wise?
No, absolutely not.
The "disadvantages" you see are not problematic at all and will not cause any problems in practice.
The above is the detailed content of How to avoid making dependencies available to all packages in a module?. For more information, please follow other related articles on the PHP Chinese website!