Go-map对value排序操作
网上一些的代码,真的令人难受,不知道自己测试一下吗。这是我改进的代码,“golang语言中文网”,也存在错误,不废话直接上代码
/根据value排序
type Pair struct {
Key string
Value int
}
type PairList []Pair
func (p PairList) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
func (p PairList) Len() int { return len(p) }
func (p PairList) Less(i, j int) bool { return p[i].Value < p[j].Value }
func sortMap(m map[string]int) PairList{
p := make(PairList, len(m))
i := 0
for k, v := range m {
p[i] = Pair{k, v}
i++
}
sort.Sort(p)
return p
}
测试:这块直接传入参数就行了!
[{N7 0} {N9 0} {N4 1} {N0 1} {N6 5} {N8 6} {N2 7} {N1 7} {N5 8} {N3 9}]
map[N0:1 N1:7 N2:7 N3:9 N4:1 N5:8 N6:5 N7:0 N8:6 N9:0]
上面一行就是得到的结果,接下来就简单,自己搞定吧!!。下面一行是原始的map。
😭需要注意的问题是,如果你将struct转成map,有是乱序的,原因是出入的位置是随机的没有固定的顺序。
https://thoughts.teambition.com/share/5fc4c9775bbd370042aec1fc#title=golang-map-value_排序