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 con sort.Strings().
  • Esta técnica es muy útil cuando necesitas mostrar datos ordenados para el usuario.

🛠️ Práctica recomendada

  1. Crea un map[string]int con productos y sus precios.
  2. Obtén un slice con todas las claves del map.
  3. Ordénalas con sort.Strings().
  4. Imprime el nombre del producto y su precio en orden alfabético.
  5. (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.