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