Sobes.tech
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.