Junior — Middle
Cum este implementată structura orientată pe obiecte în limbajul Go și cum diferă de cea clasică?
sobes.tech AI
Răspuns de la AI
În Go, programarea orientată pe obiecte este implementată prin compoziție și interfețe, nu prin clase și moștenire, ca în OOP clasic.
Principalele diferențe:
- Lipsa claselor: În Go, nu există clase, în schimb se folosesc structuri (
struct) care conțin câmpuri și metode. - Compoziție în loc de moștenire: În loc să moștenești structuri, poți include o structură într-una alta, ceea ce permite reutilizarea codului.
- Interfețe: Interfețele în Go definesc un set de metode pe care o structură trebuie să le implementeze. Tipurile implementează automat interfața dacă au metodele necesare, fără declarație explicită.
Exemplu:
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())
}
}
Astfel, Go oferă un model de programare orientată pe obiect mai simplu și mai flexibil, bazat pe interfețe și compoziție, fără complexitatea moștenirii clasice.