Go-da obyekt yönümlü model necə işləyir?
sobes.tech Süni İntellekt
AI-dan cavab
Go'da ənənəvi obyekt yönümlü model və dərin irsiyyət hierarxiyası mövcud deyil. Əvəzinə, aşağıdakılar istifadə olunur:
-
Strukturlar (Structs): Məlumat sahələrini müəyyən edir, metodlar olmadan siniflərə bənzəyir.
type Person struct { Name string Age int } -
Metodlar: Müəyyən bir strukturla əlaqəli funksiyalar. Onlar strukturdan ayrı olaraq müəyyən edilir.
func (p Person) Greet() string { return "Salam, mənim adım " + p.Name } func (p *Person) CelebrateBirthday() { p.Age++ }- Qiymət qəbul edənlə (məsələn,
(p Person)) metodlar strukturun nüsxəsi ilə işləyir. - Göstərici qəbul edənlə (məsələn,
(p *Person)) metodlar isə strukturun orijinalı ilə işləyir və onun sahələrini dəyişdirməyə imkan verir.
- Qiymət qəbul edənlə (məsələn,
-
İnterfeyslər: Metod imzalarının toplusu. Bir tip bütün metodları tətbiq edərsə, şərti olaraq bu interfeysi təmin edir. Bu, Go'da çox biçimlilik (polimorfizm) əsasdır.
type Greeter interface { Greet() string } // Person, Greeter-i şərti olaraq təmin edir -
Kompozisiya (İç içe yerləşdirmə): Miras yerinə, bir struktur başqa bir strukturu daxil edə bilər, onun sahələrinə və metodlarına çıxış əldə edir.
type Employee struct { Person // Person strukturunu daxil edir ID string } func (e Employee) GetID() string { return e.ID }Daxil edilən sahələr və metodlar birbaşa əlçatandır:
e := Employee{ Person: Person{Name: "Alice", Age: 30}, ID: "E123", } fmt.Println(e.Name) // Daxil edilən Person vasitəsilə Name sahəsinə çıxış fmt.Println(e.Greet()) // Daxil edilən Person vasitəsilə Greet metodunu çağırır fmt.Println(e.GetID()) // Employee metodunu çağırır
Beləliklə, Go'da obyekt yönümlü model strukturların kompozisiyasına və interfeyslər tərəfindən müəyyən olunan davranışa əsaslanır, klassik irsiyyət hierarxiyasına deyil.