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

Какое отличие имеет интерфейс в языке Go по сравнению с интерфейсами в других языках программирования?

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

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
    var f File
    r = f // File автоматически реализует Reader
    fmt.Println(r)
}