Junior — Middle
Kas on võimalik realiseerida pärimismehhanismi Go keeles?
sobes.tech AI
Vastus AI-lt
Go keeles puudub klassikaline pärimine nagu objektorienteeritud keeltes nagu Java või C++. Selle asemel kasutab Go struktuuride kompositsiooni ja embeddingut (sisseehitamist) koodi taaskasutamiseks ja funktsionaalsuse laiendamiseks.
Näiteks saab ühte struktuuri sisestada teise, ning sisestatud struktuuri meetodid saavad olla kättesaadavad välise struktuuri kaudu:
package main
import "fmt"
type Animal struct {
Name string
}
func (a Animal) Speak() {
fmt.Println(a.Name, "räägib")
}
type Dog struct {
Animal // sisestamine
}
func main() {
d := Dog{Animal{Name: "Bobic"}}
d.Speak() // kutsub välja Animal struktuuri Speak meetodi
}
Sellisel viisil saavutab Go käitumise, mis sarnaneb pärimisega, kuid see realiseeritakse kompositsiooni kaudu, mis soodustab paindlikumat ja lihtsamat disaini.