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

Каким образом реализуется принцип инверсии зависимостей в языке Go?

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

sobes.tech AI

В Go принцип инверсии зависимостей реализуется через использование интерфейсов и внедрение зависимостей (dependency injection) вручную.

Основная идея — определить интерфейс, который описывает поведение, а затем передавать в функции или структуры объекты, реализующие этот интерфейс. Таким образом, высокоуровневые модули зависят от абстракций, а не от конкретных реализаций.

Пример:

// Интерфейс
 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)
 }

func main() {
     email := EmailNotifier{}
     SendAlert(email, "Важное сообщение")
}

Таким образом, можно легко менять реализации без изменения кода, который их использует.