maneira fácil de obter as chaves em um mapa em ordem alfabética
Pergunta
No Go, que é a maneira mais fácil de obter as chaves em um mapa classificados em ordem alfabética? Este é o caminho mais curto eu posso fazer isso:
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)
}
Solução
Você está classificando um array de strings usando StringVector. Para minimizar a sobrecarga, você pode classificar uma matriz de strings.
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)
}
Output:
[a b x z]
Outras dicas
Isso seria mais elegante método:
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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow