Sobes.tech
Назад к вопросам
Middle
8

Как можно использовать встроенные структуры для имитации наследования в Go?

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

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

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 // встроенная структура
    Breed string
}

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

Таким образом, Dog "унаследует" методы Animal и может использовать их напрямую.