欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

希望本文所述对大家go语言程序设计有所帮助。