Sobes.tech
Назад к вопросам
Junior — Middle
87

Как осуществляется определение и использование интерфейсов в языке Go?

Компании, где спрашивали
Эрливидео
ГазпромГазпром
Startribe
Самокат Тех
СамокатСамокат
Miatel
КуперКупер
EMCD
Кредиска

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

sobes.tech AI

В 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 process(r Reader) {
    buf := make([]byte, 100)
    r.Read(buf)
}

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

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