Что такое интерфейсы и чем они отличаются от классов?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

Ключевые отличия:

  • Интерфейсы описывают только методы, классы (в Go — структуры) содержат данные и методы.
  • В Go нет классов как таковых, есть структуры и интерфейсы.
  • Тип автоматически реализует интерфейс, если у него есть все методы интерфейса (неявная реализация).

Пример:

// Интерфейс
 type Reader interface {
     Read(p []byte) (n int, err error)
 }

// Структура, реализующая интерфейс
 type File struct {}

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

 func main() {
     var r Reader = File{} // File реализует Reader
 }

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее