Sobes.tech
Junior — Middle

Czy można zaimplementować mechanizm dziedziczenia w języku Go?

sobes.tech AI

Odpowiedź od AI

W języku Go nie ma klasycznego dziedziczenia, jak w językach obiektowo zorientowanych typu Java czy C++. Zamiast tego, Go używa kompozycji i osadzania (embedding) struktur do ponownego użycia kodu i rozszerzania funkcjonalności.

Na przykład, można osadzić jedną strukturę w drugiej, a metody osadzonej struktury będą dostępne przez strukturę zewnętrzną:

package main
import "fmt"

type Animal struct {
    Name string
}

func (a Animal) Speak() {
    fmt.Println(a.Name, "mówi")
}

type Dog struct {
    Animal // osadzenie struktury Animal
}

func main() {
    d := Dog{Animal{Name: "Bobic"}}
    d.Speak() // wywoła metodę Speak struktury Animal
}

W ten sposób w Go osiąga się zachowanie podobne do dziedziczenia, ale jest ono realizowane przez kompozycję, co sprzyja bardziej elastycznemu i prostemu projektowi.