Junior — Middle
Ποια είναι η διαφορά των διεπαφών στο Golang σε σύγκριση με αυτές σε άλλες γλώσσες προγραμματισμού;
sobes.tech AI
Απάντηση από AI
Στο Go, οι διεπαφές υλοποιούνται σύμφωνα με την αρχή της έμμεσης υλοποίησης. Αυτό σημαίνει ότι ένας τύπος υλοποιεί αυτόματα μια διεπαφή αν έχει όλα τα απαιτούμενα μεθόδους, χωρίς να χρειάζεται να το δηλώσει ρητά στον κώδικα (σε αντίθεση με Java ή C#, όπου πρέπει να δηλωθεί ρητά η υλοποίηση της διεπαφής).
Αυτό επιτρέπει τη συγγραφή πιο ευέλικτου και λιγότερο δεσμευμένου κώδικα, καθώς οι τύποι και οι διεπαφές δεν εξαρτώνται άμεσα ο ένας από τον άλλο.
Παράδειγμα:
package main
import "fmt"
type Reader interface {
Read(p []byte) (n int, err error)
}
type MyReader struct{}
func (r MyReader) Read(p []byte) (n int, err error) {
// υλοποίηση ανάγνωσης
return 0, nil
}
func main() {
var r Reader = MyReader{} // έμμεση υλοποίηση διεπαφής
fmt.Println(r)
}
Επίσης, στο Go δεν υπάρχει κληρονομικότητα κλάσεων, οι διεπαφές χρησιμοποιούνται για πολυμορφισμό και σύνθεση, κάτι που τις διακρίνει από πολλές άλλες γλώσσες.