Sobes.tech
Junior — Middle

Como são definidos e utilizados os interfaces na linguagem Go?

sobes.tech IA

Resposta da IA

В 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 позволяют писать гибкий и расширяемый код, опираясь на поведение типов, а не на их конкретные реализации.