Junior — Middle
Lze v jazyce Go implementovat mechanismus dědičnosti?
sobes.tech AI
Odpověď od AI
V jazyce Go neexistuje klasické dědičnosti, jako v objektově orientovaných jazycích typu Java nebo C++. Místo toho Go používá kompozici a embedding (vkládání) struktur pro opakované použití kódu a rozšiřování funkcionalit.
Například lze vložit jednu strukturu do jiné a metody vložené struktury budou dostupné přes vnější strukturu:
package main
import "fmt"
type Animal struct {
Name string
}
func (a Animal) Speak() {
fmt.Println(a.Name, "říká")
}
type Dog struct {
Animal // vložení struktury Animal
}
func main() {
d := Dog{Animal{Name: "Bobic"}}
d.Speak() // zavolá metodu Speak struktury Animal
}
Tímto způsobem je v Go dosaženo chování podobného dědičnosti, ale je realizováno přes kompozici, což podporuje flexibilnější a jednodušší návrh.