Sobes.tech
Junior — Middle

Como é que se pode determinar se uma estrutura específica implementa uma interface dada?

sobes.tech IA

Resposta da IA

Em Go, a implementação de uma interface é verificada de forma implícita: se um tipo contém todos os métodos declarados na interface, ele implementa automaticamente essa interface.

Para determinar se uma estrutura implementa uma interface dada, pode-se:

  1. Tentar atribuir uma instância da estrutura a uma variável de tipo interface — se a compilação passar, significa que a estrutura implementa a interface.
  2. Usar uma verificação estática com _var _:
var _ MyInterface = (*MyStruct)(nil)

Se este código compilar sem erros, significa que MyStruct implementa a interface MyInterface.

Exemplo:

type MyInterface interface {
    DoSomething()
}

type MyStruct struct {}

func (m *MyStruct) DoSomething() {
    // implementação
}

// Verificação de implementação de interface
var _ MyInterface = (*MyStruct)(nil)

Dessa forma, em Go, não é necessário indicar explicitamente a implementação de uma interface — basta implementar todos os seus métodos.