golang使用sort接口实现排序示例

作者:dotcoo 时间:2024-02-21 09:42:11 

本文实例讲述了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语言程序设计有所帮助。

标签:golang,sort接口,排序
0
投稿

猜你喜欢

  • Python与C语言分别完成排序流程

    2023-04-19 08:26:24
  • 如何用python绘制雷达图

    2023-04-19 12:44:09
  • Python 使用多属性来进行排序

    2023-11-10 21:15:07
  • Django+zTree构建组织架构树的方法

    2023-08-13 06:17:54
  • 图片预加载效果的实现

    2008-06-16 12:08:00
  • 分析python请求数据

    2023-09-26 08:46:08
  • Python列表元素常见操作简单示例

    2022-08-18 08:33:57
  • oracle的一些tips技巧

    2009-03-02 11:06:00
  • MySQL查询优化:连接查询排序limit(join、order by、limit语句)介绍

    2024-01-21 19:06:16
  • JS+HTML5实现上传图片预览效果完整实例【测试可用】

    2024-04-17 10:41:20
  • pytorch 实现cross entropy损失函数计算方式

    2022-03-18 00:45:50
  • 一些关于Go程序错误处理的相关建议

    2023-07-21 22:46:43
  • python读取hdfs上的parquet文件方式

    2021-04-07 11:54:31
  • Python中ROS和OpenCV结合处理图像问题

    2023-04-27 00:33:02
  • PHP观察者模式原理与简单实现方法示例

    2024-05-03 15:49:15
  • django 做 migrate 时 表已存在的处理方法

    2022-02-14 16:11:53
  • 让设计散发文化韵味

    2009-03-22 15:01:00
  • 利用matplotlib实现根据实时数据动态更新图形

    2023-07-17 18:50:45
  • Django web框架使用url path name详解

    2022-01-06 19:43:59
  • 记一次python 爬虫爬取深圳租房信息的过程及遇到的问题

    2022-03-22 02:09:02
  • asp之家 网络编程 m.aspxhome.com