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í.