Sobes.tech
Middle

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.
  • 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.