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]) } }