Golang中如何根据int类型的值对map进行排序
Golang中如何根据int类型的值对map进行排序 https://play.golang.org/p/JPOsCRX7ejW 我不确定我哪里做错了。结果本应是排序好的,但实际情况并非如此。
2 回复
更多关于Golang中如何根据int类型的值对map进行排序的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Go语言中,map本身是无序的,无法直接根据键或值进行排序。要实现根据int类型的值对map进行排序,需要将map的键值对提取到切片中,然后使用sort.Slice或sort.SliceStable函数对该切片进行排序。以下是示例代码:
package main
import (
"fmt"
"sort"
)
func main() {
// 原始map
m := map[string]int{
"Alice": 30,
"Bob": 25,
"Eve": 35,
"Dave": 20,
}
// 创建键值对切片
type kv struct {
Key string
Value int
}
var kvs []kv
for k, v := range m {
kvs = append(kvs, kv{k, v})
}
// 根据Value字段进行排序
sort.Slice(kvs, func(i, j int) bool {
return kvs[i].Value < kvs[j].Value
})
// 输出排序结果
for _, kv := range kvs {
fmt.Printf("%s: %d\n", kv.Key, kv.Value)
}
}
如果希望根据键进行排序,只需将排序函数中的kvs[i].Value和kvs[j].Value替换为kvs[i].Key和kvs[j].Key即可。

