Junior — Middle
Je možné implementovať mechanizmus dedičstva v jazyku Go?
sobes.tech AI
Odpoveď od AI
V jeziku Go ne obstaja klasično dedovanje, kot v objektno usmerjenih jezikih, kot sta Java ali C++. Namesto tega Go uporablja kompozicijo in embedding (vdelavo) struktur za ponovno uporabo kode in razširitev funkcionalnosti.
Na primer, lahko vdelate eno strukturo v drugo, in metode vdelane strukture bodo dostopne prek zunanje strukture:
package main
import "fmt"
type Animal struct {
Name string
}
func (a Animal) Speak() {
fmt.Println(a.Name, "govori")
}
type Dog struct {
Animal // vdelava strukture Animal
}
func main() {
d := Dog{Animal{Name: "Bobic"}}
d.Speak() // pokliče metodo Speak strukture Animal
}
Na ta način v Go dosežemo vedenje, podobno dedovanju, vendar se to izvaja preko kompozicije, kar spodbuja bolj prilagodljiv in preprost dizajn.