14 Trabajando con Maps en Go Part 2
Published May 21, 2024
GoProgrammingMap
🧠 Introducción
Ya aprendimos cómo crear, leer y eliminar elementos de un map
. En esta lección profundizamos en cómo recorrer un map, obtener sus claves, y ordenarlas alfabéticamente si es necesario.
1. 🔁 Iterar un map con for-range
La forma más común de recorrer un map es usando for-range
:
shoppingCart := map[string]int{
"grape": 14,
"orange": 3,
"strawberry": 8,
}
for k, v := range shoppingCart {
fmt.Println(k, v)
}
k
: clave (key)v
: valor (value)
🧠 Notas:
- Si solo necesitas la clave, puedes omitir el valor:
for k := range shoppingCart {
fmt.Println(k)
}
- El orden no está garantizado. No importa en qué orden agregues los elementos, Go puede recorrerlos en cualquier orden.
⚠️ Esta es una gran diferencia con los slices o arrays, donde el orden sí es predecible.
2. 🗝️ Obtener todas las claves (keys)
A diferencia de otros lenguajes como JavaScript, Go no tiene un método .keys()
. Pero podemos construir uno fácilmente:
var keys []string
for k := range shoppingCart {
keys = append(keys, k)
}
fmt.Println(keys)
🔍 Detalles:
- Solo recorremos las claves (
range map
). - Usamos
append
para agregarlas a un slice. - No hay claves duplicadas, ya que los maps no lo permiten.
3. 🔡 Ordenar las claves
Si quieres recorrer o imprimir los elementos del map en orden alfabético, debes ordenar el slice de claves con sort.Strings()
:
import (
"fmt"
"sort"
)
func main() {
shoppingCart := map[string]int{
"grape": 14,
"orange": 3,
"strawberry": 8,
}
var keys []string
for k := range shoppingCart {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
fmt.Printf("%s: %d\n", k, shoppingCart[k])
}
}
✅ Conclusión
- Puedes recorrer maps con
for-range
, accediendo a claves y valores. - El orden de iteración no está garantizado, ya que los maps en Go no son ordenados.
- Puedes construir tu propia función para obtener claves (
keys
) y luego ordenarlas consort.Strings()
. - Esta técnica es muy útil cuando necesitas mostrar datos ordenados para el usuario.
🛠️ Práctica recomendada
- Crea un
map[string]int
con productos y sus precios. - Obtén un
slice
con todas las claves del map. - Ordénalas con
sort.Strings()
. - Imprime el nombre del producto y su precio en orden alfabético.
- (Extra) Calcula el total de la compra recorriendo el map.
🚀 Siguientes pasos
Ahora que sabes cómo manipular y recorrer maps, es momento de seguir con:
- 📦 Structs con maps: cómo mapear structs completos.
- 🔄 Maps dentro de maps (nested maps).
- 🧠 Usar maps en funciones: cómo pasarlos y modificarlos correctamente.