Una forma sencilla de conseguir las llaves en un mapa en orden alfabético
Pregunta
En Go, ¿cuál es la forma más fácil de obtener las claves en un mapa orden alfabético? Este es el camino más corto que puedo hacerlo:
package main
import "container/vector"
import "fmt"
import "sort"
func main() {
m := map[string]string {"b":"15", "z":"123123", "x":"sdf", "a":"12"}
var keys vector.StringVector;
for k,_ := range ( m ) {
keys.Push(k)
}
sort.Sort( &keys )
fmt.Printf("%v\n", keys)
}
Solución
Se está ordenando una matriz de cadenas utilizando StringVector. Para minimizar la sobrecarga, se puede ordenar una matriz de cadenas.
package main
import (
"fmt"
"sort"
)
func main() {
m := map[string]string{"b": "15", "z": "123123", "x": "sdf", "a": "12"}
mk := make([]string, len(m))
i := 0
for k, _ := range m {
mk[i] = k
i++
}
sort.Strings(mk)
fmt.Println(mk)
}
Salida:
[a b x z]
Otros consejos
Ese sería el método más elegante:
package main
import (
"fmt"
"sort"
)
func main() {
m := map[string]string{"b": "15", "z": "123123", "x": "sdf", "a": "12"}
keys := make([]string, 0, len(m))
for key := range m {
keys = append(keys, key)
}
sort.Strings(keys)
fmt.Println(keys)
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow