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