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

Можно ли реализовать механизм наследования в языке Go?

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

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

sobes.tech AI

В языке Go нет классического наследования, как в объектно-ориентированных языках типа Java или C++. Вместо этого Go использует композицию и встраивание (embedding) структур для повторного использования кода и расширения функциональности.

Например, можно встроить одну структуру в другую, и методы встроенной структуры станут доступны через внешнюю:

package main
import "fmt"

type Animal struct {
    Name string
}

func (a Animal) Speak() {
    fmt.Println(a.Name, "говорит")
}

type Dog struct {
    Animal // встраивание структуры Animal
}

func main() {
    d := Dog{Animal{Name: "Бобик"}}
    d.Speak() // вызовет метод Speak структуры Animal
}

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