Go'da ob'ektga yo'naltirilgan model qanday tuzilgan?
sobes.tech AI
AIdan javob
Go'da an'anaviy ob'ektga yo'naltirilgan model va chuqur meroslik hierarxiyasi mavjud emas. O'rniga quyidagilar ishlatiladi:
-
Strukturalar (Structs): Ma'lumot maydonlarini belgilaydi, metodlar bo'lmagan sinflarga o'xshash.
type Person struct { Name string Age int } -
Metodlar: Ma'lum bir struktura bilan bog'langan funksiyalar. Ular struktura bilan alohida aniqlanadi.
func (p Person) Greet() string { return "Salom, mening ismim " + p.Name } func (p *Person) CelebrateBirthday() { p.Age++ }- Qabul qiluvchi qiymat bilan metodlar (masalan,
(p Person)) nusxa bilan ishlaydi. - Qabul qiluvchi ko'rsatkich bilan metodlar (masalan,
(p *Person)) asl struktura bilan ishlaydi va uning maydonlarini o'zgartirish imkonini beradi.
- Qabul qiluvchi qiymat bilan metodlar (masalan,
-
Interfeyslar: Metod imzolaridan iborat to'plamlar. Bir tur barcha metodlarni amalga oshirsa, avtomatik ravishda bu interfeysni qanoatlantiradi. Bu Go'da polimorfizmning asosidir.
type Greeter interface { Greet() string } // Person avtomatik ravishda Greeter ni amalga oshiradi -
Kompazitsiya (Incrustatsiya): Meros o'rniga, bir struktura boshqa struktura bilan o'zaro bog'lanishi mumkin, uning maydonlari va metodlariga kirish imkonini beradi.
type Employee struct { Person // Person strukturasini o'z ichiga oladi ID string } func (e Employee) GetID() string { return e.ID }Incrustatsiya qilingan maydonlar va metodlar to'g'ridan-to'g'ri mavjud:
e := Employee{ Person: Person{Name: "Alice", Age: 30}, ID: "E123", } fmt.Println(e.Name) // Incrustatsiyalangan Person orqali Name maydoniga kirish fmt.Println(e.Greet()) // Incrustatsiyalangan Person orqali Greet metodini chaqirish fmt.Println(e.GetID()) // Employee metodini chaqirish
Shunday qilib, Go'da ob'ektga yo'naltirilgan model strukturalarning kompozitsiyasi va interfeyslar bilan belgilangan xulq-atvorga asoslangan, klassik meros hierarxiyasiga emas.