Sobes.tech
Junior

Ördek tipi nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Ördek tipi (duck typing), nesne veya değişkenin tipi, açık kalıtım veya arayüz uygulamasına dayanmak yerine, belirli bir yöntem veya özellik kümesinin varlığına göre belirlenen dinamik tipleme tarzıdır. Bir nesne "ördek gibi yürüyorsa ve ördek gibi vakırtıyorsa", o zaman o nesne bir ördektir.

Go'da, ördek tipi, örtük arayüzler aracılığıyla uygulanır. Yapı veya başka herhangi bir veri tipi, belirli bir arayüzü açıkça belirtmek zorunda değildir. Yeter ki, veri tipi, arayüzde tanımlanan tüm yöntemleri uygulasın.

Örnek:

package main

import "fmt"

// Speaker arayüzünü tanımlıyoruz
type Speaker interface {
	Speak()
}

// Köpek yapısını tanımlıyoruz
type Dog struct{}

// Dog, Speak() metodunu uygular
func (d Dog) Speak() {
	fmt.Println("Hav!")
}

// Kedi yapısını tanımlıyoruz
type Cat struct{}

// Cat, Speak() metodunu uygular
func (c Cat) Speak() {
	fmt.Println("Miyav!")
}

// Bu fonksiyon, Speaker türünde bir argüman alır
func MakeItSpeak(s Speaker) {
	s.Speak()
}

func main() {
	d := Dog{}
	c := Cat{}

	// Hem Dog hem de Cat nesneleri, 
	// her ikisi de dolaylı olarak Speaker uygular.
	MakeItSpeak(d)
	MakeItSpeak(c)
}

Bu örnekte, ne Dog ne de Cat açıkça Speaker uyguladıklarını belirtir. Ancak, ikisinin de Speak() metoduna sahip olması, arayüzdeki metodun imzasıyla uyumlu olduğu için, Speaker beklenen yerde kullanılabilirler.

Go'da ördek tipi avantajları:

  • Esneklik: Modüler ve genişletilebilir sistemler kolayca oluşturulabilir.
  • Sıkı hiyerarşi olmaması: Tasarım sırasında kalıtım veya açık arayüz uygulaması gerekmez.
  • Mevcut türlerin kolay kullanımı: Gerekli metodlara sahip herhangi bir tür, bu arayüzü karşılayabilir, hatta bu arayüz dikkate alınmadan geliştirilmiş olsa bile.