Назад к вопросам
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 достигается поведение, похожее на наследование, но реализуется оно через композицию, что способствует более гибкому и простому дизайну.