Ответ
Да, работал. Гексагональная архитектура (ports & adapters) помогает изолировать бизнес-логику от внешних зависимостей (БД, API и т.д.). В Go это часто реализуется через интерфейсы и dependency injection.
Пример:
// Порты (интерфейсы)
type UserRepository interface {
Save(user User) error
}
// Адаптер для БД
type PostgresUserRepository struct {
db *sql.DB
}
func (r *PostgresUserRepository) Save(user User) error {
// Реализация сохранения в Postgres
}
// Ядро (бизнес-логика)
type UserService struct {
repo UserRepository
}
func (s *UserService) Register(user User) error {
// Валидация и бизнес-правила
return s.repo.Save(user)
}
Плюсы: тестируемость (можно подменить адаптеры на моки), гибкость, независимость от инфраструктуры. Минусы: больше boilerplate кода, сложнее для простых проектов.