Sobes.tech
Back to questions
Middle
4

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

Companies where asked
VKVK

Answer from AI

sobes.tech AI

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

Внутри интерфейс представлен структурой с двумя полями: указателем на тип (type descriptor) и указателем на данные (value). Это позволяет интерфейсу хранить значение любого типа, реализующего методы интерфейса, и вызывать их динамически.

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

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

type File struct {}

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

var r Reader = &File{} // File реализует Reader

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