Junior — Middle
Miras prensibini ve Go dilinde nasıl uygulandığını açıklayabilir misiniz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde, diğer nesne yönelimli dillerdeki gibi klasik kalıtım yoktur. Bunun yerine, Go bileşim ve gömme (embedding) kullanır; bu, kodun yeniden kullanılmasını ve işlevselliğin genişletilmesini sağlar.
Gömme (embedding), bir tipi (yapıyı) başka bir içine dahil etmeye olanak tanır ve gömülü tipin metodları, dış tip tarafından erişilebilir hale gelir; bu, kalıtıma benzer.
Örnek:
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
// Animal'ı Dog içine gömüyoruz
type Dog struct {
Animal
}
func (d Dog) Speak() string {
return "Hav!"
}
func main() {
dog := Dog{Animal{Name: "Buddy"}}
fmt.Println(dog.Name) // Animal alanına erişim
fmt.Println(dog.Speak()) // Yeniden tanımlanmış metod
}
Bu şekilde, Go, bileşim ve gömme yoluyla kalıtsal bir etki elde eder ve klasik hiyerarşinin karmaşıklıklarından kaçınır.