Sobes.tech
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.Println aceita argumentos do tipo interface{}.
  • 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
}