Junior — Middle
Може ли се реализовати механизам наслеђивања у језику Go?
sobes.tech АИ
Одговор од АИ
U jeziku Go ne postoji klasično nasleđivanje, kao u objektno-orijentisanim jezicima poput Jave ili C++. Umesto toga, Go koristi kompoziciju i embedding (ugrađivanje) struktura za ponovnu upotrebu koda i proširenje funkcionalnosti.
Na primer, možete ugraditi jednu strukturu u drugu, i metode ugrađene strukture će biti dostupne putem spoljašnje strukture:
package main
import "fmt"
type Animal struct {
Name string
}
func (a Animal) Speak() {
fmt.Println(a.Name, "priča")
}
type Dog struct {
Animal // ugradnja strukture Animal
}
func main() {
d := Dog{Animal{Name: "Bobic"}}
d.Speak() // poziva metodu Speak strukture Animal
}
Na ovaj način, u Go se postiže ponašanje slično nasleđivanju, ali se realizuje putem kompozicije, što podstiče fleksibilniji i jednostavniji dizajn.