Sobes.tech
Назад к вопросам
Senior
4

Что такое интерфейсы в Go? Как типы реализуют интерфейсы?

Компании, где спрашивали
2gis2gis

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

sobes.tech AI

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

Это называется неявной реализацией интерфейсов. Благодаря этому можно писать более гибкий и расширяемый код.

Пример:

package main
import "fmt"

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
    f := File{}
    r = f // File реализует Reader
    fmt.Println(r)
}

Здесь тип File реализует интерфейс Reader, потому что у него есть метод Read с нужной сигнатурой.