Junior — Middle
Jak zaimplementowana jest struktura obiektowa w języku Go i czym różni się od klasycznej?
sobes.tech AI
Odpowiedź od AI
W Go programowanie obiektowe realizowane jest za pomocą kompozycji i interfejsów, a nie przez klasy i dziedziczenie, jak w klasycznym OOP.
Główne różnice:
- Brak klas: W Go nie ma klas, zamiast tego używa się struktur (
struct), które zawierają pola i metody. - Kompozycja zamiast dziedziczenia: Zamiast dziedziczyć struktury, można włączać jedną strukturę do drugiej, co pozwala na ponowne użycie kodu.
- Interfejsy: Interfejsy w Go definiują zestaw metod, które musi zaimplementować struktura. Typy automatycznie implementują interfejs, jeśli mają potrzebne metody, bez konieczności jawnego deklarowania.
Przykład:
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())
}
}
W ten sposób, Go oferuje prostszy i bardziej elastyczny model programowania obiektowego oparty na interfejsach i kompozycji, bez złożoności klasycznego dziedziczenia.