📅  最后修改于: 2023-12-03 15:38:47.641000             🧑  作者: Mango
在 Golang 中,可以使用 map
类型来存储键值对数据。但是,如果需要对 map
进行排序,该怎么办呢?本文将介绍如何按键或值对 Golang 地图进行排序。
对地图进行按键排序,可以使用以下步骤:
以下是示例代码:
package main
import (
"fmt"
"sort"
)
func main() {
m := map[string]int{
"apple": 2,
"orange": 1,
"banana": 3,
}
keys := make([]string, 0, len(m))
for k := range m {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
fmt.Printf("%s: %d\n", k, m[k])
}
}
输出:
apple: 2
banana: 3
orange: 1
在示例代码中,我们首先将地图的键放入字符串切片中,然后对切片进行排序。最后遍历排序后的切片并使用键来访问地图的值。
对地图进行按值排序,可以使用以下步骤:
以下是示例代码:
package main
import (
"fmt"
"sort"
)
type kv struct {
Key string
Value int
}
func main() {
m := map[string]int{
"apple": 2,
"orange": 1,
"banana": 3,
}
kvs := make([]kv, 0, len(m))
for k, v := range m {
kvs = append(kvs, kv{k, v})
}
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)
}
}
输出:
orange: 1
apple: 2
banana: 3
在示例代码中,我们首先将地图的键值对放入结构体中并将结构体放入切片中。然后我们编写了一个自定义排序函数,它使用结构体中的值进行比较。最后,我们使用自定义排序函数对切片进行排序,然后遍历排序后的切片并使用结构体中的键和值来访问地图。
以上是如何按键或值对 Golang 地图进行排序的介绍。希望对你有所帮助!