Sobes.tech
Junior — Middle

Come si può determinare se una determinata struttura implementa un'interfaccia data?

sobes.tech AI

Risposta dell'AI

In Go, l'implementazione di un'interfaccia viene verificata in modo implicito: se un tipo contiene tutti i metodi dichiarati nell'interfaccia, implementa automaticamente questa interfaccia.

Per determinare se una struttura implementa un'interfaccia data, si può:

  1. Provare ad assegnare un'istanza della struttura a una variabile di tipo interfaccia — se la compilazione ha successo, significa che la struttura implementa l'interfaccia.
  2. Usare una verifica statica con _var _:
var _ MyInterface = (*MyStruct)(nil)

Se questo codice si compila senza errori, significa che MyStruct implementa l'interfaccia MyInterface.

Esempio:

type MyInterface interface {
    DoSomething()
}

type MyStruct struct {}

func (m *MyStruct) DoSomething() {
    // implementazione
}

// Verifica implementazione interfaccia
var _ MyInterface = (*MyStruct)(nil)

In questo modo, in Go non è necessario indicare esplicitamente l'implementazione di un'interfaccia — basta implementare tutti i suoi metodi.