Sobes.tech
Junior — Middle

Ako sa definujú a používajú rozhrania v jazyku Go?

sobes.tech AI

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