Junior
Qual é o papel da interface vazia na linguagem Go?
sobes.tech IA
Resposta da IA
A interface vazia interface{} em Go pode armazenar valores de qualquer tipo. Isso a torna útil para os seguintes cenários:
- Funções que trabalham com tipos de dados desconhecidos em tempo de compilação. Por exemplo, a biblioteca padrão
fmt.Printlnaceita argumentos do tipointerface{}. - Armazenamento de tipos de dados mistos em coleções. A fatia
[]interface{}pode conter elementos de diferentes tipos. - Implementação de polimorfismo quando os tipos específicos não são conhecidos antecipadamente.
No entanto, o uso da interface vazia requer realizar uma afirmação de tipo (type assertion) ou um switch de tipos (type switch) em tempo de execução para acessar o valor real e seus métodos, o que pode ser menos seguro em termos de tipos e menos eficiente em comparação com o uso de tipos específicos ou interfaces mais especializadas.
// Exemplo de uso da interface vazia
var data interface{}
data = 10 // data agora armazena um int
data = "hello" // data agora armazena uma string
data = true // data agora armazena um bool
// Afirmativa de tipo para acessar o valor
if value, ok := data.(string); ok {
// value é uma string
_ = value
}
// Switch de tipos
switch v := data.(type) {
case int:
// v é um int
_ = v
case string:
// v é uma string
_ = v
default:
// Tipo desconhecido
}