Sobes.tech
Junior — Middle

Qual é a diferença entre uma interface vazia e uma interface com valor nil na linguagem de programação Go?

sobes.tech IA

Resposta da IA

No Go, a interface vazia interface{} é uma interface que não contém métodos e pode armazenar um valor de qualquer tipo. No entanto, quando uma variável de tipo interface contém nil, é importante entender exatamente o que é nil.

  • Interface vazia, sem valor: uma variável de tipo interface que não aponta para nenhum valor é considerada nil.
  • Interface com valor nil: se a interface contém um tipo específico, mas o valor desse tipo é nil, então a própria interface não é igual a nil, pois contém informações sobre o tipo.

Exemplo:

var i interface{}       // i == nil
var p *int = nil         // p == nil
i = p                   // i != nil, pois contém o tipo *int, mas o valor é nil

fmt.Println(i == nil)   // false
fmt.Println(p == nil)   // true

É importante considerar isso ao verificar por nil para evitar erros inesperados.