Junior — Middle
Jak można określić, czy dana struktura implementuje określony interfejs?
sobes.tech AI
Odpowiedź od AI
W Go implementacja interfejsu jest sprawdzana niejawnie: jeśli typ zawiera wszystkie metody zadeklarowane w interfejsie, automatycznie go implementuje.
Aby sprawdzić, czy struktura implementuje dany interfejs, można:
- Spróbować przypisać instancję struktury do zmiennej typu interfejs — jeśli kompilacja się powiedzie, oznacza to, że struktura implementuje interfejs.
- Użyć statycznej kontroli za pomocą _var _:
var _ MyInterface = (*MyStruct)(nil)
Jeśli ten kod skompiluje się bez błędów, oznacza to, że MyStruct implementuje interfejs MyInterface.
Przykład:
type MyInterface interface {
DoSomething()
}
type MyStruct struct {}
func (m *MyStruct) DoSomething() {
// implementacja
}
// Sprawdzenie implementacji interfejsu
var _ MyInterface = (*MyStruct)(nil)
W ten sposób w Go nie ma potrzeby jawnego wskazywania implementacji interfejsu — wystarczy zaimplementować wszystkie jego metody.