Sobes.tech
Middle

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

sobes.tech AI

Отговор от 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: "Bobby"},
        Breed:  "Пастир",
    }
    d.Speak() // извикване на метода Animal чрез Dog
}

По този начин, Dog "наследява" методите на Animal и може да ги използва директно.