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

Junior
1.4k просмотров
AFK Offer AI

Интерфейс — это набор сигнатур методов. Любой тип, который реализует все методы интерфейса, автоматически его удовлетворяет (implicit implementation, без implements).

type Writer interface {
    Write(p []byte) (n int, err error)
}

type MyWriter struct{}

func (w MyWriter) Write(p []byte) (int, error) { // MyWriter автоматически реализует Writer return len(p), nil }

Пустой интерфейс interface{} (или any с Go 1.18) принимает значение любого типа. Под капотом интерфейс — это пара (type, value). Если оба nil, интерфейс равен nil. Но если type не nil, а value nil — интерфейс не nil, это частая ловушка.

Следующий вопрос

Что такое pprof и как измерить использование памяти?