Sobes.tech
Middle

Ako použiť zabudované štruktúry na simuláciu dedičstva v Go?

sobes.tech AI

Odpoveď od AI

V jazyku Go neexistuje klasické dědičstvo ako v objektově orientovaných jazycích, ale lze použít vestavěné struktury (embedding) k napodobení dědičství. Toho se dosáhne začleněním jedné struktury do druhé bez uvedení jména pole, což umožňuje "dědit" metody vestavěné struktury.

Příklad:

package main
import "fmt"

type Animal struct {
    Name string
}

func (a Animal) Speak() {
    fmt.Println(a.Name, "říká")
}

type Dog struct {
    Animal // vestavěná struktura
    Breed string
}

func main() {
    d := Dog{
        Animal: Animal{Name: "Bobby"},
        Breed:  "Německý ovčák",
    }
    d.Speak() // volání metody Animal přes Dog
}

Tímto způsobem bude mít Dog "zděděné" metody od Animal a může je přímo používat.