- 思路:
- 首先,Go语言的
map
本身是无序的,要对其按值排序,需要将map
的键值对提取到一个切片中。
- 然后,使用Go标准库中的
sort
包对这个切片按值进行排序。
- 最后,遍历排序后的切片输出结果。
- 实现代码:
package main
import (
"fmt"
"sort"
)
type kv struct {
key string
value int
}
func main() {
m := map[string]int{
"apple": 5,
"banana": 3,
"cherry": 7,
}
// 将map的键值对提取到切片中
var data []kv
for k, v := range m {
data = append(data, kv{k, v})
}
// 按值升序排序
sort.Slice(data, func(i, j int) bool {
return data[i].value < data[j].value
})
// 输出排序后的结果
for _, item := range data {
fmt.Printf("Key: %s, Value: %d\n", item.key, item.value)
}
}