日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

go语言map按照key,value进行排序

發布時間:2024/2/28 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 = 100

2. value有序

思路是直接不用map,用struct存放key和value,實現sort接口,就可以調用sort.Sort進行排序了

?

總結

以上是生活随笔為你收集整理的go语言map按照key,value进行排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。