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