Sobes.tech
Junior — Middle

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

sobes.tech AI

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

Στο Go, ο έλεγχος συμμόρφωσης μιας δομής με μια διεπαφή γίνεται έμμεσα — αν η δομή υλοποιεί όλες τις μεθόδους της διεπαφής, τότε της ταιριάζει.

Για έναν ρητό έλεγχο κατά τη φάση της μεταγλώττισης, συχνά χρησιμοποιείται μια έλεγχος μεταγλώττισης μέσω ανάθεσης:

type MyInterface interface {
    DoSomething()
}

type MyStruct struct {}

func (m MyStruct) DoSomething() {}

// Έλεγχος μεταγλώττισης
var _ MyInterface = (*MyStruct)(nil)

Αν το MyStruct δεν υλοποιεί το MyInterface, ο μεταγλωττιστής θα εμφανίσει σφάλμα. Αυτή είναι μια βολική μέθοδος να διασφαλίσετε ότι η δομή συμμορφώνεται με τη διεπαφή χωρίς να τρέξετε το πρόγραμμα.