golang使用sort接口实现排序示例
程序员文章站
2024-01-16 08:43:16
本文实例讲述了golang使用sort接口实现排序的方法。分享给大家供大家参考,具体如下:
今天看见群里再讨论排序的sort.interface的实现,有童鞋一直搞不定,...
本文实例讲述了golang使用sort接口实现排序的方法。分享给大家供大家参考,具体如下:
今天看见群里再讨论排序的sort.interface的实现,有童鞋一直搞不定,我就上手了一下,哦耶搞定了,代码放在这里.
其实很简单sort.interface借口有三个方法,给自己的struct实现这三个方法,然后用将自己的结构体传给sort.sort方法就排序完成.
当然sort包也有几个常用的方法sort.float64slice sort.intslise sort.stringslise,呵呵
复制代码 代码如下:
package main
import (
"fmt"
"sort"
)
type mapsorter []item
type item struct {
key string
val int64
}
func newmapsorter(m map[string]int64) mapsorter {
ms := make(mapsorter, 0, len(m))
for k, v := range m {
ms = append(ms, item{k, v})
}
return ms
}
func (ms mapsorter) len() int {
return len(ms)
}
func (ms mapsorter) less(i, j int) bool {
return ms[i].val < ms[j].val // 按值排序
//return ms[i].key < ms[j].key // 按键排序
}
func (ms mapsorter) swap(i, j int) {
ms[i], ms[j] = ms[j], ms[i]
}
func main(){
m := map[string]int64 {
"e": 10,
"a": 2,
"d": 15,
"c": 8,
"f": 1,
"b": 12,
}
ms := newmapsorter(m)
sort.sort(ms)
for _, item := range ms {
fmt.printf("%s:%d\n", item.key, item.val)
}
}
import (
"fmt"
"sort"
)
type mapsorter []item
type item struct {
key string
val int64
}
func newmapsorter(m map[string]int64) mapsorter {
ms := make(mapsorter, 0, len(m))
for k, v := range m {
ms = append(ms, item{k, v})
}
return ms
}
func (ms mapsorter) len() int {
return len(ms)
}
func (ms mapsorter) less(i, j int) bool {
return ms[i].val < ms[j].val // 按值排序
//return ms[i].key < ms[j].key // 按键排序
}
func (ms mapsorter) swap(i, j int) {
ms[i], ms[j] = ms[j], ms[i]
}
func main(){
m := map[string]int64 {
"e": 10,
"a": 2,
"d": 15,
"c": 8,
"f": 1,
"b": 12,
}
ms := newmapsorter(m)
sort.sort(ms)
for _, item := range ms {
fmt.printf("%s:%d\n", item.key, item.val)
}
}
希望本文所述对大家go语言程序设计有所帮助。