Что такое интерфейсы в Go? Зачем нужны? Как устроены под капотом?

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

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

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

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

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

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

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

  • Неявная реализация: тип считается реализующим интерфейс, если у него есть все методы интерфейса, без явного указания.
  • Интерфейсы описывают поведение, а не структуру данных.
  • Пустой интерфейс (interface{}) — интерфейс без методов, который может содержать значение любого типа.
  • Интерфейсы могут быть вложенными, объединяя методы нескольких интерфейсов.

Пример:

package main
import "fmt"

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

type MyReader struct {}

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

func main() {
    var r Reader = MyReader{} // MyReader неявно реализует Reader
    fmt.Println(r)
}

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

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

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

Подробнее