go语言map按照key,value进行排序
生活随笔
收集整理的這篇文章主要介紹了
go语言map按照key,value进行排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. go語言的map是無序的,多次遍歷map的結果可能是不同的
舉例如下:
package main import ("fmt" ) // GetMap 得到map func GetMap() (result map[int]uint32) {result = map[int]uint32{}// 壓入各個數據result[24] = 223result[17] = 91result[9] = 13result[11] = 330result[55] = 100return } func main() {mapResu := GetMap()// 遍歷mapfor key, value := range mapResu {fmt.Printf("key = %v,value = %v\n", key, value)} }第一次遍歷結果如下:
key = 17,value = 91 key = 9,value = 13 key = 11,value = 330 key = 55,value = 100 key = 24,value = 223第二次遍歷結果如下:
key = 55,value = 100 key = 24,value = 223 key = 17,value = 91 key = 9,value = 13 key = 11,value = 330可以看到兩次遍歷的結果是不同的
實現map遍歷有序
1. key有序
思路:對key排序,再遍歷key輸出value
代碼如下:既可以從小到大排序,也可以從大到小排序
package main import ("fmt""sort" ) // GetMap 得到map及其所有的key // keys : map中所有的key,已排序,從小到大 func GetMap() (result map[int]uint32, keys []int) {result = map[int]uint32{}keys = []int{}// 壓入各個數據result[24] = 223result[17] = 91result[9] = 13result[11] = 330result[55] = 100// 得到各個keyfor key := range result {keys = append(keys, key)}// 給key排序,從小到大sort.Sort(sort.IntSlice(keys))// 給key排序,從大到小//sort.Sort(sort.Reverse(sort.IntSlice(keys)))return }func main() {mapResu, keys := GetMap()// 注意:遍歷keys,而不是遍歷mapfor _, key := range keys {fmt.Printf("key = %v,value = %v\n", key, mapResu[key])} }打印結果如下:
key = 9,value = 13 key = 11,value = 330 key = 17,value = 91 key = 24,value = 223 key = 55,value = 1002. value有序
思路是直接不用map,用struct存放key和value,實現sort接口,就可以調用sort.Sort進行排序了
?
總結
以上是生活随笔為你收集整理的go语言map按照key,value进行排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c# list 自定义排序
- 下一篇: go语言IP转换uint32,uint3