Назад к вопросам
СБЕР дейвайсы
Junior — Middle
71
Можете объяснить принцип наследования и как он реализован в языке Go?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В языке Go нет классического наследования, как в других объектно-ориентированных языках. Вместо этого Go использует композицию и встраивание (embedding) для повторного использования кода и расширения функциональности.
Встраивание позволяет включать один тип (структуру) внутрь другого, и при этом методы встроенного типа становятся доступными для внешнего типа, что похоже на наследование.
Пример:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Встраиваем Animal в Dog
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Woof!"
}
func main() {
dog := Dog{Animal{Name: "Buddy"}}
fmt.Println(dog.Name) // Доступ к полю Animal
fmt.Println(dog.Speak()) // Переопределённый метод
}
Таким образом, Go достигает похожего эффекта на наследование через композицию и встраивание, избегая сложностей классической иерархии.