Ответ
Use Cases в Go — это сценарии использования приложения, описывающие бизнес-логику без привязки к инфраструктуре (БД, HTTP и т.д.). Они инкапсулируют правила домена и часто реализуются как методы структур, зависящие от интерфейсов (портов), а не конкретных реализаций (адаптеров).
Пример:
type UserRepository interface {
Save(user User) error
}
type RegisterUser struct {
repo UserRepository
}
func (uc *RegisterUser) Execute(name, email string) error {
if !strings.Contains(email, "@") {
return errors.New("invalid email")
}
return uc.repo.Save(User{Name: name, Email: email})
}
Ключевые преимущества:
- Чистая архитектура (разделение слоёв)
- Лёгкое тестирование (можно мокать зависимости)
- Гибкость (подмена реализаций)