Junior — Middle
Meros olish prinsipi va u Go tilida qanday amalga oshirilishini tushuntirib berishingiz mumkinmi?
sobes.tech AI
AIdan javob
Go tilida an'anaviy merosxo'rlik mavjud emas, boshqa ob'ektga yo'naltirilgan tillardagi kabi. O'rniga, Go kompozitsiya va embedding (joylashtirish) ni ishlatadi, bu kodni qayta ishlatish va funksionallikni kengaytirish uchun.
Embedding bir tur (struktur) ni boshqa tur ichiga qo'shishga imkon beradi, va joylashtirilgan turning metodlari tashqi tur uchun mavjud bo'ladi, bu merosga o'xshaydi.
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 "Hov!"
}
func main() {
dog := Dog{Animal{Name: "Buddy"}}
fmt.Println(dog.Name) // Animal maydoniga kirish
fmt.Println(dog.Speak()) // Qayta yozilgan metod
}
Shu tarzda, Go kompozitsiya va embedding orqali merosga o'xshash ta'sirga erishadi va klassik hierarxiyaning murakkabliklaridan qochadi.