Junior — Middle
Czy można zaimplementować mechanizm dziedziczenia w języku Go?
sobes.tech AI
Odpowiedź od AI
W języku Go nie ma klasycznego dziedziczenia, jak w językach obiektowo zorientowanych typu Java czy C++. Zamiast tego, Go używa kompozycji i osadzania (embedding) struktur do ponownego użycia kodu i rozszerzania funkcjonalności.
Na przykład, można osadzić jedną strukturę w drugiej, a metody osadzonej struktury będą dostępne przez strukturę zewnętrzną:
package main
import "fmt"
type Animal struct {
Name string
}
func (a Animal) Speak() {
fmt.Println(a.Name, "mówi")
}
type Dog struct {
Animal // osadzenie struktury Animal
}
func main() {
d := Dog{Animal{Name: "Bobic"}}
d.Speak() // wywoła metodę Speak struktury Animal
}
W ten sposób w Go osiąga się zachowanie podobne do dziedziczenia, ale jest ono realizowane przez kompozycję, co sprzyja bardziej elastycznemu i prostemu projektowi.