[Go] go for range循環map是無序的 變成有序


 go for range循環map是無序的 , 這個是go team團隊 有意為之

在進行循環遍歷的時候 , 生成了一個隨機數作為遍歷開始的位置

 

可以for range循環map取出所有的key ,  sort.Strings(keys) , 排序所有的keys

再循環所有的keys  , 按這個循環取出map里的值

 

如果不依賴map中的key的話 , 或者map的value是個結構體 , 里面有key的值 , 不依賴map的話可以把它轉成slice

類似下面這樣

func SortMap(youMap map[string]interface{}) []interface{} {
    keys := make([]string, 0)
    for k, _ := range youMap {
        keys = append(keys, k)
    }
    myMap := make([]interface{}, 0)
    sort.Strings(keys)
    for _, k := range keys {
        myMap = append(myMap, youMap[k])
    }
    return myMap
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM