Junior — Middle
Ako je v jazyku Go implementovan objektovo orientovaný štruktúra a ako sa líši od klasickej?
sobes.tech AI
Odpoveď od AI
V jazyku Go je objektovo orientované programovanie realizované prostredníctvom kompozície a rozhraní, nie cez triedy a dedičstvo, ako v klasickom OOP.
Hlavné rozdiely:
- Absencia tried: V Go nie sú triedy, namiesto toho sa používajú štruktúry (
struct), ktoré obsahujú polia a metódy. - Kompozícia namiesto dedičstva: Namiesto dedičstva štruktúr je možné zahrnúť jednu štruktúru do druhej, čo umožňuje opätovné použitie kódu.
- Rozhrania: Rozhrania v Go definujú súbor metód, ktoré musí implementovať štruktúra. Typy automaticky implementujú rozhranie, ak majú potrebné metódy, bez explicitného vyhlásenia.
Prí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())
}
}
Takto Go ponúka jednoduchší a flexibilnejší model objektovo orientovaného programovania, založený na rozhraniach a kompozícii, bez zložitostí klasického dedičstva.