Junior — Middle
Kako je implementirana objektnо-orijentisana struktura u jeziku Go i kako se razlikuje od klasične?
sobes.tech АИ
Одговор од АИ
U Go, objektno-orijentisano programiranje se implementira putem kompozicije i interfejsa, a ne putem klasa i nasledjivanja, kao u klasičnom OOP.
Glavne razlike:
- Nedostatak klasa: U Go nema klasa, umesto toga se koriste strukture (
struct) koje sadrže polja i metode. - Kompozicija umesto nasledjivanja: Umesto nasledjivanja struktura, može se uključiti jedna struktura u drugu, što omogućava ponovno korišćenje koda.
- Interfejsi: Interfejsi u Go definišu skup metoda koje struktura mora implementirati. Tipovi automatski implementiraju interfejs ako imaju potrebne metode, bez eksplicitne deklaracije.
Primer:
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())
}
}
Na ovaj način, Go nudi jednostavniji i fleksibilniji model objektno-orijentisanog programiranja, zasnovan na interfejsima i kompoziciji, bez složenosti klasičnog nasledjivanja.