Sobes.tech
Junior — Middle

Ποια είναι η σχέση μεταξύ ενός κενής διεπαφής και μιας συνηθισμένης διεπαφής στον προγραμματισμό;

sobes.tech AI

Απάντηση από AI

Στο Go, το κενό interface interface{} είναι ένα interface που δεν περιέχει καμία μέθοδο. Μπορεί να αποθηκεύσει μια τιμή οποιουδήποτε τύπου, καθώς όλοι οι τύποι υλοποιούν προεπιλεγμένα το κενό interface. Ένα κανονικό interface, αντίθετα, ορίζει ένα σύνολο μεθόδων που πρέπει να υλοποιήσει ένας τύπος για να ικανοποιεί αυτό το interface.

Έτσι, η σχέση μεταξύ του κενού και του κανονικού interface στο Go είναι ότι το κενό interface αποτελεί έναν καθολικό κοντέινερ για τιμές κάθε τύπου, ενώ το κανονικό interface ορίζει μια σύμβαση που πρέπει να ακολουθούν συγκεκριμένοι τύποι. Το κενό interface χρησιμοποιείται συχνά για την αποθήκευση και μεταφορά δεδομένων χωρίς συγκεκριμένο τύπο, ενώ τα κανονικά interface χρησιμοποιούνται για τον ορισμό της συμπεριφοράς των αντικειμένων.

Παράδειγμα:

var any interface{} = 42 // το κενό interface μπορεί να αποθηκεύσει οποιαδήποτε τιμή

// Κανονικό interface
type Reader interface {
    Read(p []byte) (n int, err error)
}

// Τύπος που υλοποιεί το Reader
type File struct {}
func (f File) Read(p []byte) (int, error) {
    // υλοποίηση
    return 0, nil
}

var r Reader = File{} // Το File υλοποιεί το interface Reader