Middle
Go'da merosni taqlid qilish uchun qanday qilib ichki tuzilmalarni ishlatish mumkin? Bu nima beradi va nima uchun ishlatiladi?
sobes.tech AI
AIdan javob
Go tilida an’anaviy meros bo‘lish yo‘q, lekin joylashtirish (embedding) tuzilmalari uni taqlid qilish imkonini beradi.
Agar bir tuzilma nomsiz maydon sifatida boshqasini o‘z ichiga olsa, joylashtirilgan tuzilmaning metodlari tashqi tuzilma uchun ochiq bo‘ladi, bu merosga o‘xshaydi.
Bu quyidagilarni ta’minlaydi:
- Kodni qayta ishlatish
- Meros o‘rniga tarkibiylik
- Joylashtirilgan tuzilmaning xulq-atvorini kengaytirish imkoniyati
Misol:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Animal ni Dog ga joylashtiramiz
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Woof!"
}
func main() {
d := Dog{Animal{Name: "Buddy"}}
fmt.Println(d.Name) // Animal maydoniga kirish
fmt.Println(d.Speak()) // qayta yozilgan metodni chaqirish
}
Oddiy turlar asosida murakkab turlar yaratish uchun ishlatiladi, qat’iy sinf merosxo‘rligi bo‘lmagan holda.