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

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

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

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

sobes.tech AI

В Go интерфейсы реализуются по принципу неявной реализации (implicit implementation). Это значит, что тип автоматически реализует интерфейс, если у него есть все методы, которые интерфейс требует, без необходимости явно указывать это в коде (в отличие от Java или C#, где нужно явно объявлять реализацию интерфейса).

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

Пример:

package main
import "fmt"

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

type MyReader struct{}

func (r MyReader) Read(p []byte) (n int, err error) {
    // реализация чтения
    return 0, nil
}

func main() {
    var r Reader = MyReader{} // неявная реализация интерфейса
    fmt.Println(r)
}

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