Sobes.tech
Junior — Middle

Qual é a diferença entre um mapa com valor nulo e um slice que contém um valor nulo?

sobes.tech IA

Resposta da IA

Em Go, um mapa (map) com valor zero é um mapa que não foi inicializado e é igual a nil. Tentar escrever nesse mapa causará um pânico.

Um slice com valor zero é um slice nil, que não aponta para um array e tem comprimento e capacidade 0. Pode ser usado com segurança, por exemplo, para leitura ou passagem para funções.

Diferenças principais:

  • map == nil significa que o mapa não foi inicializado e não pode aceitar elementos.
  • slice == nil significa que o slice está vazio e não aponta para um array, mas pode ser usado para leitura (estará vazio) e passagem.

Exemplo:

var m map[string]int // m == nil
// m["key"] = 1 // pânico: atribuição a entrada em mapa nil

var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // agora o slice está inicializado

Portanto, mapa nil não é adequado para escrita, e slice nil é seguro para leitura e expansão.