Junior — Middle
¿Cuál es la diferencia entre un mapa con valor nulo y un slice que contiene un valor nulo?
sobes.tech AI
Respuesta de la IA
En Go, un mapa (map) con valor cero es un mapa que no ha sido inicializado y es igual a nil. Intentar escribir en tal mapa provocará un pánico.
Un slice con valor cero es un slice nil, que no apunta a un array y tiene longitud y capacidad 0. Se puede usar de forma segura, por ejemplo, para leer o pasar a funciones.
Diferencias clave:
- map == nil significa que el mapa no ha sido inicializado y no puede aceptar elementos.
- slice == nil significa que el slice está vacío y no apunta a un array, pero se puede usar para leer (será vacío) y pasar.
Ejemplo:
var m map[string]int // m == nil
// m["key"] = 1 // pánico: asignación a entrada en mapa nil
var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // ahora el slice está inicializado
Por lo tanto, un mapa nil no es apto para escritura, y un slice nil es seguro para lectura y expansión.