Go does not allow cyclic imports. A solution is to create a “shared” package to hold interfaces that related
packages all reference. This, for some reason, reminds of me join tables in SQL.
Here is an example of a typical Go project. Packages toward the bottom, e.g., “common/persistence”, allow different
packages to work with each other without introducing cyclic dependencies. For this project, “log” can be referenced by
“config”, but cannot use “config” to conifgure itself.