由于GoLang Map 内部存储是无序的,当需要按顺序获得map存储的key -value值时,应该对遍历出来的结果进行重新排序;
在go 1.8版本后,提供的slice sort 功能使排序更简单:
package main import ( "fmt" "sort" ) func main() { m := map[string]int{ "something": 10, "yo": 20, "blah": 20, } type kv struct { Key string Value int } var ss []kv for k, v := range m { ss = append(ss, kv{k, v}) } sort.Slice(ss, func(i, j int) bool { return ss[i].Value > ss[j].Value // 降序 // return ss[i].Value < ss[j].Value // 升序 }) for _, kv := range ss { fmt.Printf("%s, %d ", kv.Key, kv.Value) } }