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.