Junior — Middle
Πώς μπορούμε να προσδιορίσουμε αν μια συγκεκριμένη δομή υλοποιεί μια δεδομένη διεπαφή;
sobes.tech AI
Απάντηση από AI
Στο Go, η υλοποίηση μιας διεπαφής ελέγχεται έμμεσα: αν ένας τύπος περιέχει όλες τις μεθόδους που δηλώνονται στη διεπαφή, υλοποιεί αυτόματα αυτήν τη διεπαφή.
Για να προσδιορίσετε αν μια δομή υλοποιεί μια δεδομένη διεπαφή, μπορείτε:
- Να προσπαθήσετε να αναθέσετε ένα παράδειγμα της δομής σε μια μεταβλητή τύπου διεπαφής — αν η μεταγλώττιση περάσει, σημαίνει ότι η δομή υλοποιεί τη διεπαφή.
- Να χρησιμοποιήσετε έναν στατικό έλεγχο με _var _:
var _ MyInterface = (*MyStruct)(nil)
Αν αυτός ο κώδικας μεταγλωττιστεί χωρίς σφάλματα, σημαίνει ότι το MyStruct υλοποιεί τη διεπαφή MyInterface.
Παράδειγμα:
type MyInterface interface {
DoSomething()
}
type MyStruct struct {}
func (m *MyStruct) DoSomething() {
// υλοποίηση
}
// Έλεγχος υλοποίησης διεπαφής
var _ MyInterface = (*MyStruct)(nil)
Έτσι, στο Go δεν είναι απαραίτητο να δηλώσετε ρητά την υλοποίηση μιας διεπαφής — αρκεί να υλοποιήσετε όλες τις μεθόδους της.