Manual Dependency Injection
In Go, we don't need complex DI containers. We use Constructors.
go type Server struct { repo UserRepository }
func NewServer(r UserRepository) *Server { return &Server{repo: r} }
This makes testing easy because you can inject a "Mock" repository during unit tests.