Основные приёмы: 1) Dependency Inversion — пакет A определяет интерфейс, пакет B его реализует. A не импортирует B. 2) Общий пакет — вынести типы в domain/models, оба пакета импортируют его. 3) Объединение — если два пакета сильно связаны, может они один пакет. 4) Event-based — вместо прямого вызова, один пакет публикует событие, другой подписывается. 5) Правило зависимостей: domain ← usecase ← delivery. Стрелки всегда в одну сторону. Если хочется импортировать "вверх" — значит абстракция протекает.
Как избежать циклических зависимостей?
Middle
424 просмотровAFK Offer AI
Что такое stringer go generate?