Junior — Middle
Jak w języku Go realizowany jest mechanizm dziedziczenia i jaka jest jego implementacja?
sobes.tech AI
Odpowiedź od AI
W języku Go nie ma klasycznego dziedziczenia, jak w językach obiektowych. Zamiast tego używa się kompozycji i interfejsów.
-
Kompozycja: Zamiast dziedziczenia struktur, można włączyć jedną strukturę do drugiej. To pozwala na "wbudowanie" zachowania i danych.
-
Interfejsy: Go używa interfejsów do opisu zachowania. Każda struktura, która implementuje metody interfejsu, jest uważana za jego realizację.
Przykład kompozycji:
package main
import "fmt"
type Animal struct {
Name string
}
func (a Animal) Speak() {
fmt.Println(a.Name, "mówi")
}
type Dog struct {
Animal // włączenie struktury Animal
}
func main() {
d := Dog{Animal{Name: "Bobby"}}
d.Speak() // wywoła metodę Animal
}
W ten sposób Go promuje użycie kompozycji i interfejsów zamiast klasycznego dziedziczenia.