Sobes.tech
Back to questions
Senior
5

Что такое интерфейсы в Go и для чего они нужны?

Companies where asked
VK CloudVK Cloud

Answer from AI

sobes.tech AI

Интерфейсы в Go — это способ описать поведение через набор методов, которые должен реализовать тип, чтобы считаться соответствующим этому интерфейсу.

Особенности и назначение:

  • Интерфейс задаёт контракт: какие методы должен иметь тип.
  • Тип считается реализующим интерфейс, если у него есть все методы интерфейса — это называется неявная реализация, без явного указания.
  • Позволяют писать гибкий и расширяемый код, оперируя абстракциями, а не конкретными типами.
  • Используются для полиморфизма: разные типы могут использоваться через один интерфейс.

Пример:

type Reader interface {
    Read(p []byte) (n int, err error)
}

func ReadData(r Reader) {
    buf := make([]byte, 100)
    n, err := r.Read(buf)
    // обработка данных
}

Здесь функция ReadData может работать с любым типом, который реализует метод Read, не заботясь о конкретной реализации.

Таким образом, интерфейсы позволяют строить модульный, тестируемый и расширяемый код.