golang map数组根据某个字段值排序

早过忘川 提交于 2020-08-14 05:55:02
package main

import (
	"fmt"
	"math/rand"
	"sort"
)

type MapsSort struct {
	Key string
	MapList []map[string] interface{}
}

func (m *MapsSort) Len() int {
	return len(m.MapList)
}

func (m *MapsSort) Less(i, j int) bool {
	return m.MapList[i][m.Key].(float64) > m.MapList[j][m.Key].(float64)
}

func (m *MapsSort) Swap(i, j int) {
	m.MapList[i],m.MapList[j] = m.MapList[j],m.MapList[i]
}

func main() {
	mapsSort := MapsSort{}
	mapsSort.Key = "data"
	maps:= make([]map[string] interface{},0)
	for i:=0 ; i<10;i++ {
		data := rand.Float64()
		mapTemp := make(map[string] interface{})
		mapTemp["data"] = data
		mapTemp["aaa"] = fmt.Sprintf("aaa%d",i)
		maps = append(maps, mapTemp)
	}
	mapsSort.MapList = maps
	fmt.Println(mapsSort)
	sort.Sort(&mapsSort)
	fmt.Println(mapsSort)
}

  

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!