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

Что такое интерфейс в Go и как работает duck typing?

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

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

sobes.tech AI

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

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

Пример:

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

// Любой тип, у которого есть метод Read([]byte) (int, error), реализует Reader
func ReadData(r Reader) {
    buf := make([]byte, 100)
    r.Read(buf)
}

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