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语言程序设计有所帮助。