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.