Junior — Middle
Derleyici, aşırı yükleme veya geçersiz kılma durumunda hangi belirli yöntemin çağrılacağını nasıl belirler?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde, C++ veya Java'daki gibi klasik anlamda metod aşırı yüklemesi yoktur. Her metod veya fonksiyon paket içinde benzersiz bir isim alır. Aynı isimde, farklı parametrelerle birkaç fonksiyon varsa, bu derleme hatasına yol açar.
Yeniden tanımlama konusunda, Go arayüzleri kullanır: Bir tür, bir arayüzün metodlarını uygularsa, arayüz üzerinden çağrıldığında, belirli türün metodu çağrılır.
Bu nedenle, metod seçimi derleme zamanında fonksiyonun adı ve imzasına göre yapılır ve arayüz üzerinden dinamik çağrı, nesnenin tipi çalışma zamanında belirlenir.
Örnek:
package main
import "fmt"
type Speaker interface {
Speak()
}
type Dog struct{}
func (d Dog) Speak() { fmt.Println("Woof") }
type Cat struct{}
func (c Cat) Speak() { fmt.Println("Meow") }
func main() {
var s Speaker
s = Dog{}
s.Speak() // Woof yazdırır
s = Cat{}
s.Speak() // Meow yazdırır
}