Как внедрять зависимости в Go?

Middle
868 просмотров
AFK Offer AI

В Go зависимости обычно внедряются через конструктор: NewUserUsecase(repo domain.UserRepository, email EmailSender) — передаёшь интерфейсы, а конкретные реализации подставляются в main.go при инициализации. Никакой магии, никакой рефлексии, всё явно. В main.go создаёшь repo := postgres.NewUserRepo(pool), потом uc := usecase.NewUserUsecase(repo) — и всё связано. Для тестов подставляешь моки. Это называется "poor man's DI" — и в Go это стандартный подход, который работает отлично.

Следующий вопрос

Как работать с errors пакетом?