A directed acyclic graph or DAG is a directed graph with no directed cycles.

An arbitrary directed graph may also be transformed into a DAG, called its condensation, by contracting each of its strongly connected components into a single super vertex.

Go’s import declaration declares a dependency relation between the importing and imported package. It is illegal for a package to import itself, directly or indirectly, or to directly import a package without referring to any of its exported identifiers.

“Allowing cycles enables laziness, poor dependency management, and slow builds” - Rob Pike.

So, definitions strongly connected to each other so much so that they form cycles should be “condensed” into one package, period.

Less is more.