Middle
Go dilində obyekt yönümlü proqramlaşdırma (OOP) anlayışları necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da digər dillərdə (Java, C++) geniş yayılmış klasslar, irsiyyət və virtual metodlar kimi klassik anlayışlar mövcud deyil. Obyekt yönümlü proqramlaşdırma aşağıdakı yollarla həyata keçirilir:
- Strukturlar (Structs): Məlumatları (sahələri) qruplaşdırır.
type Person struct { Name string Age int } - Metodlar: Bir əlaqəli qəbul edən (struktur və ya başqa tip) ilə funksiyalar. Strukturlara davranış əlavə etməyə imkan verir.
func (p Person) Greet() string { return "Hello, my name is " + p.Name }- Qiymət qəbul edən: Metod strukturun nüsxəsi ilə işləyir. Daxili dəyişikliklər orijinal strukturu təsir etmir.
- İşarəçi qəbul edən: Metod orijinal struktur ilə işarəçi vasitəsilə işləyir. Daxili dəyişikliklər orijinal strukturu təsir edir.
- İnterfeyslər: Bir tipin uyğun gəlməsi üçün metodların imzalarını müəyyən edir. "Ördək tipi" (
duck typing) ilə çox formallıq təmin edir. Bir tip, bütün metodlarını həyata keçirərsə, interfeysi həyata keçirir.type Greeter interface { Greet() string } func SayHello(g Greeter) string { return g.Greet() } - Yerləşdirmə (Embedding): Bir strukturun başqa bir strukturu və ya interfeysi "yerləşdirməsinə" imkan verir. Bu, klassik mənada irsiyyət deyil, daha çox tərkibdir. Yerləşdirilmiş struktur anonim sahəyə çevrilir və onun sahələri və metodlarına birbaşa müraciət etmək mümkündür.
type Employee struct { Person // yerləşdirilmiş struktur ID string } // Employee indi Name və Age sahələrinə malikdir və Greet() metodunu çağırır e := Employee{ Person: Person{Name: "Alice", Age: 30}, ID: "E123", } fmt.Println(e.Greet()) // Person-un Greet() metodunu Employee vasitəsilə çağırış
| OOP Konsepti | Go-da tətbiqi | Qeydler |
|---|---|---|
| Siniflər | Structlar | class açar sözü yoxdur |
| İnkişaf | Eksport edilən (böyük hərflə başlayan) / edilməyən (kiçik hərflə başlayan) sahələr/metodlar | Paket səviyyəsində görünürlük idarəetməsi |
| İrsiyyət | Yerləşdirmə (Embedding) | Hierarxik irsiyyət yerinə kompozisiya |
| Çox formallıq | İnterfeyslər | Duck typing, interfeyslərin qeyri-şüurlu tətbiqi |