Sobes.tech
Назад к вопросам
Middle
5

Как устроены интерфейсы в Go?

Компании, где спрашивали
VKVK

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

sobes.tech AI

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

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

// Определение интерфейса
type Reader interface {
    Read(p []byte) (n int, err error)
}

// Тип, реализующий интерфейс Reader
type File struct {}

func (f File) Read(p []byte) (int, error) {
    // реализация чтения
    return 0, nil
}

func main() {
    var r Reader
    f := File{}
    r = f // File реализует Reader неявно
}

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