En las lecciones anteriores trabajamos con valores únicos. Pero, ¿qué pasa cuando necesitamos guardar una lista de usuarios, un inventario de productos o un diccionario de traducciones? Para eso usamos las colecciones de datos.
1. Arrays: Listas de tamaño fijo
Un Array en Go es una secuencia numerada de elementos con un tamaño específico que no puede cambiar.
- Se define indicando el tamaño entre corchetes [ ] seguido del tipo de dato.
- Por defecto, se inicializan con «ceros» (0 para números, «» para strings).
Ejemplo de Array:
var a [5]int
fmt.Println("emp:", a) // Salida: [0 0 0 0 0]
a[4] = 100
fmt.Println("set:", a)
fmt.Println("get:", a[4])
fmt.Println("len:", len(a)) // Tamaño del array
2. Slices: Las listas dinámicas (El estándar en Go)
- Usamos la función make para crearlos.
- Usamos append para añadir elementos (esto devuelve un nuevo slice).
Ejemplo de Slice:
s := make([]string, 3)
s[0] = "a"
s[1] = "b"
s[2] = "c"
// Añadir elementos
s = append(s, "d")
s = append(s, "e", "f")
fmt.Println("slice:", s)
fmt.Println("largo:", len(s))
El operador de «Slicing»:
Puedes obtener una parte de un slice usando la sintaxis [bajo:alto]
l := s[2:5] // Elementos desde el índice 2 hasta el 4
fmt.Println("sl1:", l)
3. Maps: Diccionarios Clave-Valor
Un Map es una estructura de datos asociativa (conocida en otros lenguajes como Hash, Diccionario o Objeto). Relaciona una clave con un valor.
- Se crean con make(map[tipo_clave]tipo_valor).
- Son extremadamente rápidos para buscar información.
Ejemplo de Map:
m := make(map[string]int)
m["manzana"] = 5
m["banana"] = 10
fmt.Println("map:", m)
// Eliminar un elemento
delete(m, "manzana")
// Verificar si una clave existe
valor, existe := m["pera"]
fmt.Println("¿Existe pera?:", existe)
Resumen de diferencias:
Array Fijo Casi nunca (solo para tamaños conocidos y constantes).
Slice Dinámico El 90% de las veces para listas de datos.
Map Dinámico Para búsquedas rápidas mediante una clave o ID.
Reto de la Lección:
Crea un programa que tenga un Map de países y sus capitales. Luego, añade un nuevo país, elimina uno existente y finalmente imprime el mapa completo usando un ciclo for (Pista: investiga cómo usar for range en Maps).

