Home > Backend Development > Golang > How to avoid making dependencies available to all packages in a module?

How to avoid making dependencies available to all packages in a module?

王林
Release: 2024-02-05 23:57:07
forward
1106 people have browsed it

How to avoid making dependencies available to all packages in a module?

Question content

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.

  • My model has few dependencies
  • 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
Copy after login

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:

  • It's very simple (especially with features like vscode's auto-import), and sometimes it's easy to require httplib in a model even though it definitely doesn't belong there.
  • Looking at 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?


Correct Answer


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!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template