mastering dependency injection in go: patterns and best practices | pilput