Назад к вопросам
Middle+
3
Как реализовано наследование в Go?
Компании, где спрашивали
Magnit Tech
Ответ от нейросети
sobes.tech AI
В Go нет классического наследования, как в объектно-ориентированных языках. Вместо этого используется композиция и встраивание (embedding) структур.
Структура может включать другую структуру как поле без имени, что позволяет "наследовать" её методы и поля. Это обеспечивает повторное использование кода и позволяет строить сложные типы из простых.
Пример:
package main
import "fmt"
type Animal struct {
Name string
}
func (a Animal) Speak() {
fmt.Println(a.Name, "говорит")
}
type Dog struct {
Animal // встраивание
}
func main() {
d := Dog{Animal{Name: "Бобик"}}
d.Speak() // вызов метода Animal
}
Здесь Dog "наследует" метод Speak от Animal через встраивание. Такой подход позволяет гибко строить иерархии без классического наследования.