Go'da nesne yönelimli model nasıl çalışır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go'da geleneksel nesne yönelimli model ve derin sınıf kalıtım hiyerarşisi yoktur. Bunun yerine şu kullanılır:
-
Yapılar (Structs): Veri alanlarını tanımlar, metodlar olmadan sınıflara benzer.
type Person struct { Name string Age int } -
Metodlar: Belirli bir yapıya bağlı fonksiyonlar. Yapıdan ayrı tanımlanırlar.
func (p Person) Greet() string { return "Merhaba, benim adım " + p.Name } func (p *Person) CelebrateBirthday() { p.Age++ }- Değer alıcıyla (örneğin,
(p Person)) çalışan metodlar yapının kopyasıyla çalışır. - İşaretçi alıcıyla (örneğin,
(p *Person)) çalışan metodlar ise yapının orijinaliyle çalışır ve alanlarını değiştirmeye olanak tanır.
- Değer alıcıyla (örneğin,
-
Arayüzler (Interfaces): Metod imzalarından oluşan kümeler. Bir tip, tüm metodları uygularsa, otomatik olarak bu arayüzü karşılar. Bu, Go'da çok biçimlilik (polymorphism) temelidir.
type Greeter interface { Greet() string } // Person, Greeter'ı otomatik olarak uygular -
Bileşim (İç içe yapılandırma): Kalıtım yerine, bir yapı başka bir yapıyı içe aktarabilir, alanlarına ve metodlarına erişebilir.
type Employee struct { Person // Person yapısını içe aktarır ID string } func (e Employee) GetID() string { return e.ID }İç içe alanlar ve metodlar doğrudan erişilebilir:
e := Employee{ Person: Person{Name: "Alice", Age: 30}, ID: "E123", } fmt.Println(e.Name) // İç içe Person aracılığıyla Name alanına erişim fmt.Println(e.Greet()) // İç içe Person aracılığıyla Greet metodunu çağırma fmt.Println(e.GetID()) // Employee metodunu çağırma
Bu şekilde, Go'daki nesne yönelimli model, yapıların bileşimi ve arayüzler tarafından tanımlanan davranışlar üzerine kuruludur, klasik sınıf kalıtım hiyerarşisi yerine.