Sobes.tech
Back to questions
Principal
31

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

Companies where asked
Avosend

Answer from AI

sobes.tech AI

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

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

package main
import "fmt"

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

type MyReader struct {}

func (r MyReader) Read(p []byte) (int, error) {
    copy(p, "hello")
    return 5, nil
}

func main() {
    var r Reader = MyReader{}
    buf := make([]byte, 5)
    r.Read(buf)
    fmt.Println(string(buf)) // вывод: hello
}

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