Sobes.tech
Junior — Middle

Go dilinde nesne yönelimli yapı nasıl uygulanır ve klasik yapıdan nasıl farklıdır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde nesne yönelimli programlama, klasik OOP'deki gibi sınıflar ve kalıtım yerine, bileşim ve arayüzler aracılığıyla uygulanır.

Ana farklar:

  • Sınıf yokluğu: Go'da sınıf yoktur, bunun yerine alanlar ve metodlar içeren yapılar (struct) kullanılır.
  • Kalıtım yerine bileşim: Yapıların kalıtımı yerine, bir yapıyı başka bir yapıya dahil edebilirsiniz, bu da kodun yeniden kullanılmasını sağlar.
  • Arayüzler: Go'daki arayüzler, bir yapının uygulaması gereken metodların bir kümesini tanımlar. Tipler, gerekli metodlara sahipse otomatik olarak arayüzü uygular, açıkça belirtmeye gerek yoktur.

Örnek:

package main
import "fmt"

type Animal interface {
    Speak() string
}

type Dog struct {}

func (d Dog) Speak() string {
    return "Woof!"
}

type Cat struct {}

func (c Cat) Speak() string {
    return "Meow!"
}

func main() {
    animals := []Animal{Dog{}, Cat{}}
    for _, a := range animals {
        fmt.Println(a.Speak())
    }
}

Bu şekilde, Go daha basit ve esnek bir nesne yönelimli model sunar, arayüzler ve bileşim üzerine kuruludur, klasik kalıtımın karmaşıklığı olmadan.