Sobes.tech
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.