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)
}

  

oschinahttps://my.oschina.net/u/4408225/blog/4281725