Sobes.tech
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:

  1. Spróbować przypisać instancję struktury do zmiennej typu interfejs — jeśli kompilacja się powiedzie, oznacza to, że struktura implementuje interfejs.
  2. 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.