golang使用sort接口实现排序示例
本文实例讲述了golang使用sort接口实现排序的方法。分享给大家供大家参考,具体如下:
今天看见群里再讨论排序的sort.Interface的实现,有童鞋一直搞不定,我就上手了一下,哦耶搞定了,代码放在这里.
其实很简单sort.Interface借口有三个方法,给自己的struct实现这三个方法,然后用将自己的结构体传给sort.Sort方法就排序完成.
当然sort包也有几个常用的方法sort.Float64Slicesort.IntSlisesort.StringSlise,呵呵
packagemain
import(
"fmt"
"sort"
)
typeMapSorter[]Item
typeItemstruct{
Keystring
Valint64
}
funcNewMapSorter(mmap[string]int64)MapSorter{
ms:=make(MapSorter,0,len(m))
fork,v:=rangem{
ms=append(ms,Item{k,v})
}
returnms
}
func(msMapSorter)Len()int{
returnlen(ms)
}
func(msMapSorter)Less(i,jint)bool{
returnms[i].Val<ms[j].Val//按值排序
//returnms[i].Key<ms[j].Key//按键排序
}
func(msMapSorter)Swap(i,jint){
ms[i],ms[j]=ms[j],ms[i]
}
funcmain(){
m :=map[string]int64{
"e":10,
"a":2,
"d":15,
"c":8,
"f":1,
"b":12,
}
ms:=NewMapSorter(m)
sort.Sort(ms)
for_,item:=rangems{
fmt.Printf("%s:%d\n",item.Key,item.Val)
}
}
希望本文所述对大家Go语言程序设计有所帮助。