We have set of common types (mostly structs, scalars, string IDs) that are used across different packages in a project written in Golang. Currently we define them in a package named "models" in the root of the project. It was made to reduce cohesion of different packages and to avoid circular dependencies. Is it considered as good practice to achieve these goals this way? If no, what are the alternative approaches?
lib
with all of the shared packages. We also follow a release process to version them so we can do ago get ...
if needed with the changes we are after.