Sobes.tech
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 δεν υπάρχει κληρονομικότητα κλάσεων, οι διεπαφές χρησιμοποιούνται για πολυμορφισμό και σύνθεση, κάτι που τις διακρίνει από πολλές άλλες γλώσσες.