Glossary: Software Design Patterns in Go
Dependency inversion principle (DIP)
Also written: DIP, dependency inversion
The SOLID principle that high-level code (order rules) shouldn't depend on low-level details (printing, mail servers). Both depend on an interface, and you pass the detail in.