> What does dependency injection give you that a simple combination of Singletons, Constructors, and Factories doesn't?
Easy refactoring of an interface/constructor? I've been using go for a while, and I decided to follow the advise of not using a DI for my project. Every time I refactor a constructor, it is a fun hunt to make the same changes everywhere I'm using that constructor.