Middle
Go'догу ички түзүмдөрдү мурасимдикти имитациялоо үчүн кантип колдонсо болот? Бул эмне берет жана эмне үчүн колдонулат?
sobes.tech AI
AIден жооп
Go тилде классдык мурас катары классикалык мурас жок, бирок ички түзүмдөр (embedding) аны имитациялоого мүмкүндүк берет.
Эгер бир түзүм башка бирөөнү атынсыз талаа катары камтыса, ички түзүмдүн ыкмалары сырткы түзүм үчүн жеткиликтүү болот, бул мураска окшош.
Бул төмөнкүлөрдү камсыздайт:
- Кодду кайра колдонуу
- Мурас ордуна түзүмдөрдүн курамы
- Ички түзүмдүн жүрүм-турумун кеңейтүү мүмкүнчүлүгү
Мисал:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Animalды Dogго камтыйбыз
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Woof!"
}
func main() {
d := Dog{Animal{Name: "Buddy"}}
fmt.Println(d.Name) // Animal талаасына кирүү
fmt.Println(d.Speak()) // кайра аныкталган ыкманы чакыруу
}
Жөнөкөй түрлөрдөн көбүрөөк татаал түрлөрдү түзүү үчүн колдонулат, катуу класстар хиерархиясы жок.