Methods

Metod ifadeleri OOP - Object Oriented Programming içerisinde yer alan ifadelerdir. GO programlama dili kendi içerisinde OOP özelliklerini tamamiyle desteklemese bile bu işlemleri için kendine has interface ve method yapılarına sahiptir. inheritence yani miras alma konusunu method ve interface kavramları ile karşılar.

method ve func arasındaki fark, method ifadeleri tanımlanmış bir alıcıya sahiptirler, yani bir nesneni örnek yapısında mevcut olan bir işlev olarak yer alırlar. func ifadeleri ise böyle bir duruma ihtiyac duymazlar.

GO programlama dilinde class ifadeleri yer almaz. Fakat struct tipleri üzerinde method ifadeleri tanımlanarak bu işlevler yerine getirilebilir.

Bir örnek ile konuyu kısaca açıklamaya çalışalım :


package lessons

import "fmt"

// struct
type User struct {
	Ad, Soyad string
}

// method
func (u User) Selamlama() string {
	return fmt.Sprintf("Merhaba %s %s", u.Ad, u.Soyad)
}

func main() {
	u := User{"Gokay", "BURUC"}
	fmt.Println(u.Selamlama())
}


Yukarıdaki ifadeyi çalıştırdığımızda ekran çıktısı şu şekilde olacaktır.

Merhaba Gokay BURUC

Şimdi burada neler oldu kademe kademe açıklayalım :


type User struct {
	Ad, Soyad string
}

User isimli bir struct ifadesi tanımladık ve bu ifadenin alabileceği değerlere Ad ve Soyad değerlerini atadık. Bu değerleri tanımlayacağımız method ifadesinde kullanmak için atadık.


// method
func (u User) Selamlama() string {
	return fmt.Sprintf("Merhaba %s %s", u.Ad, u.Soyad)
}

Şimdi method ifademizi inceleyelim. (u User) kısmında argüman olarak kullanılacak yapının şablonunu u ismiyle User isimli struct ifadesinden alacağımızı belirttik. Selamlama() ifadesi ise method ifademizin ismidir ve bu ifade string türünde bir veri döndürecektir.

return ile string ifademizi döndürürken fmt.Sprintf() ifadesi içerisinde ("Merhaba %s %s" , u.Ad , u.Soyad ) ifadesi ile u ile User struct ifadesine atanan değerlerin çağrılacağını belirttik.


func main() {
	u := User{"Gokay", "BURUC"}
	fmt.Println(u.Selamlama())
}

main isimli fonksiyon ifademizde u değeri olarak u := User{"Gokay","BURUC"} ifadesini atadık. Burada u.Ad ifadesine "Gokay" ve u.Soyad ifadesine "BURUC" tanımlanmıştır. Bu struct ifadesini Selamlama() isimli method ifadesiyle işleme tabi tutmak için u.Selamlama() şeklinde bir yazım yaptık ve u.Ad için atadığımız "Gokay" ve u.Soyad için atadığımız "BURUC" ifadeleri işleme method içinde kullanılmıştır.

İşlem sonucunda aşağıdaki şekilde bir ekran çıktısı elde ettik:

Merhaba Gokay BURUC