Cómo obtener un slice de claves de un map en Go: guía completa
¡Hola a todos! Empecé a estudiar Go recientemente y me encontré con un problema que parece elemental, pero no encuentro una solución elegante.
Tengo un map con datos de usuarios:
users := map[int]string{
1: "Alice",
2: "Bob",
3: "Charlie",
4: "Diana",
}
Necesito obtener una lista de todos los IDs de usuarios (claves) como un slice []int. En Python simplemente escribiría list(users.keys()), pero en Go no existe una función tan simple.
Intenté hacerlo así:
var keys []int
for key := range users {
keys = append(keys, key)
}
Esto funciona, pero me parece demasiado verboso. ¿Quizás hay una función incorporada o una forma más idiomática? En particular, me preocupa:
- El orden de las claves: ¿siempre es aleatorio?
- ¿Qué hacer con maps grandes (millones de entradas)?
- ¿Se puede hacer en una sola línea?
Agradecería ejemplos