Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
У вас будут имена вроде controller.UserController, в которых вы дублируете имя пакета в имени типа.
Опять же, ужасные имена вроде users.User и та же проблема с круговыми зависимостями, когда наш accounts.Controller должен взаимодействовать с users.Controller и наоборот.
us := &postgres.UserService{DB: db}
Выгода от дублирования имени будет в том, что вы изолируете весь HTTP код внутри вашего http пакета:
package http
import (
«net/http»
«github.com/benbjohnson/myapp»
)
Дайте угадаю: в myapp будет import «github.com/benbjohnson/http»
то с таким подходом вы огребете с временем компиляции, потому как у вас жесткая связка всех зависимостей.
Используйте интерфейсы для зависимостей как можно чаще и проблем будет меньше.
Организация кода в Go