Sobes.tech
Junior — Middle

Можете ли објаснити принцип наслеђивања и како је реализован у језику Go?

sobes.tech АИ

Одговор од АИ

U jeziku Go ne postoji klasično nasleđivanje kao u drugim objektno-orijentisanim jezicima. Umesto toga, Go koristi kompoziciju i embedding za ponovnu upotrebu koda i proširenje funkcionalnosti.

Embedding omogućava uključivanje jednog tipa (strukture) u drugi, a metode ugrađenog tipa postaju dostupne za spoljašnji tip, što liči na nasleđivanje.

Primer:

type Animal struct {
    Name string
}

func (a Animal) Speak() string {
    return "..."
}

// Uključujemo Animal u Dog

type Dog struct {
    Animal
}

func (d Dog) Speak() string {
    return "Hau!"
}

func main() {
    dog := Dog{Animal{Name: "Buddy"}}
    fmt.Println(dog.Name)       // Pristup polju Animal
    fmt.Println(dog.Speak())    // Prepisana metoda
}

Na ovaj način, Go postiže efekat sličan nasleđivanju putem kompozicije i embeddinga, izbegavajući složenosti klasične hijerarhije.