Junior — Middle
Ar įmanoma įgyvendinti paveldėjimo mechanizmą Go kalboje?
sobes.tech AI
Atsakymas iš AI
Go kalboje nėra klasikinės paveldėjimo, kaip objektų orientuotose kalbose, tokiose kaip Java ar C++. Vietoje to, Go naudoja struktūrų kompoziciją ir embedding (įdėjimą) kodui pakartotinai naudoti ir funkcionalumui išplėsti.
Pavyzdžiui, galima įdėti vieną struktūrą į kitą, ir įdėtos struktūros metodai bus prieinami per išorinę struktūrą:
package main
import "fmt"
type Animal struct {
Name string
}
func (a Animal) Speak() {
fmt.Println(a.Name, "sako")
}
type Dog struct {
Animal // įdėjimas
}
func main() {
d := Dog{Animal{Name: "Bobic"}}
d.Speak() // iškvies Animal struktūros Speak metodą
}
Taip pasiekiamas elgesys, panašus į paveldėjimą, bet jis realizuojamas per kompoziciją, kas skatina lankstesnį ir paprastesnį dizainą.