map用for range遍历不能保证顺序输出,原因:在range时为引用类型(slice,map,channel)创建索引,而map的索引是未被指定的,所以无序。
解决方案:通过sort中的排序包进行对map中的key进行排序。
package main
import (
"fmt"
"sort"
)
func main() {
var m = map[string]int{
"9": 0,
"2": 1,
"5": 2,
"1": 3,
}
var keys []string
for k := range m {
keys = append(keys, k)
}
sort.Strings(keys) //升序
for _, k := range keys {
fmt.Println("Key:", k, "Value:", m[k])
}
}