Golang Ducktyping
Ducktyping dinamik dillerde kullanılan bir terimdir. Amaç; herhangi bir objedeki var olan herhangi bir metodu invoke edebilmen için bir tipe ihtiyaç olmamasıdır. Metot objede tanımlanmışsa onu invoke edebilirsin. Bu
Eğer bir ördek(duck) ördek gibi görünüyorsa ve ördek gibi vak vaklıyorsa, ördektir.
ifadesinden gelmektedir.
Teknik olarak Golang’de bu işlem derleme zamanında olduğu için structural typing
olarak geçer.
Bu sayede bir interface’i deklaratif olarak implement etmek zorunda kalmazsınız.
Eğer Arac
diye bir interface var ise ve bu interface’in her metodu ayrı bir type da da mevcutsa, örneğin Motosiklet
type’ı, bu; zaten Motosiklet
type’ının da aynı zamanda bir Arac
olduğunu gösterir. Bunu yukardaki gibi deklaratif olarak belli etmemize gerek yok.
Yukarıdaki örneğe bakacak olursak, araciHizlandir
fonksiyonu Arac
type’ından bir parametre bekliyordu fakat biz ona Motosiklet
type’ından bir parametre geçtik ve sorunsuz çalıştı. Bu demek oluyor ki; aslında Motosiklet
type’ı da bir Arac
tır ve biz bunu kodta hiç belirtmedik.