Sobes.tech
Junior — Middle

Jak je v jazyce Go implementována objektově orientovaná struktura a jak se liší od klasické?

sobes.tech AI

Odpověď od AI

V jazyce Go je objektově orientované programování realizováno pomocí kompozice a rozhraní, nikoli pomocí tříd a dědičnosti, jako v klasickém OOP.

Hlavní rozdíly:

  • Absence tříd: V Go neexistují třídy, místo nich se používají struktury (struct), které obsahují pole a metody.
  • Kompozice místo dědičnosti: Místo dědění struktur lze zahrnout jednu strukturu do jiné, což umožňuje opětovné použití kódu.
  • Rozhraní: Rozhraní v Go definují sadu metod, které musí struktura implementovat. Typy je automaticky implementují, pokud mají potřebné metody, bez nutnosti explicitního deklarování.

Příklad:

package main
import "fmt"

type Animal interface {
    Speak() string
}

type Dog struct {}

func (d Dog) Speak() string {
    return "Woof!"
}

type Cat struct {}

func (c Cat) Speak() string {
    return "Meow!"
}

func main() {
    animals := []Animal{Dog{}, Cat{}}
    for _, a := range animals {
        fmt.Println(a.Speak())
    }
}

Tímto způsobem nabízí Go jednodušší a flexibilnější model objektově orientovaného programování, založený na rozhraních a kompozici, bez složitostí klasického dědění.