Sobes.tech
Назад к вопросам
Junior — Middle
84

Назови два сценария, в которых применение интерфейсов в Go будет оправдано и полезно

Ответ от нейросети

sobes.tech AI

Интерфейсы в Go полезны в следующих сценариях:

  1. Абстракция и полиморфизм — когда нужно определить набор методов, которые должны реализовывать разные типы, чтобы работать с ними единообразно. Например, интерфейс io.Reader позволяет читать данные из разных источников (файлы, сети, буферы) без знания конкретного типа.

  2. Тестирование и мокирование — интерфейсы позволяют легко подменять реальные реализации на заглушки или моки при написании тестов, что упрощает изоляцию компонентов и проверку логики.

Пример интерфейса и его реализации:

// Интерфейс
 type Notifier interface {
     Notify(message string) error
 }

// Реализация
 type EmailNotifier struct {}

 func (e EmailNotifier) Notify(message string) error {
     // отправка email
     return nil
 }

// Использование
 func SendAlert(n Notifier, msg string) {
     n.Notify(msg)
 }