Go语言使用sort包对任意类型元素的集合进行排序的方法

作者:books1958 时间:2023-09-02 03:55:18 

本文实例讲述了Go语言使用sort包对任意类型元素的集合进行排序的方法。分享给大家供大家参考。具体如下:

使用sort包的函数进行排序时,集合需要实现sort.Inteface接口,该接口中有三个方法:

// Len is the number of elements in the collection. 
Len() int 
// Less reports whether the element with 
// index i should sort before the element with index j. 
Less(i, j int) bool 
// Swap swaps the elements with indexes i and j. 
Swap(i, j int)

以下为简单示例:

//对任意对象进行排序 
type Person struct { 
    name string 
    age  int 

 
//为*Person添加String()方法,便于输出 
func (p *Person) String() string { 
    return fmt.Sprintf("( %s,%d )", p.name, p.age) 

 
type PersonList []*Person 
 
//排序规则:首先按年龄排序(由小到大),年龄相同时按姓名进行排序(按字符串的自然顺序) 
 
func (list PersonList) Len() int { 
    return len(list) 

 
func (list PersonList) Less(i, j int) bool { 
    if list[i].age < list[j].age { 
        return true 
    } else if list[i].age > list[j].age { 
        return false 
    } else { 
        return list[i].name < list[j].name 
    } 

 
func (list PersonList) Swap(i, j int) { 
    var temp *Person = list[i] 
    list[i] = list[j] 
    list[j] = temp 

 
func interfaceTest0203() { 
    fmt.Println("------") 
    p1 := &Person{"Tom", 19} 
    p2 := &Person{"Hanks", 19} 
    p3 := &Person{"Amy", 19} 
    p4 := &Person{"Tom", 20} 
    p5 := &Person{"Jogn", 21} 
    p6 := &Person{"Mike", 23} 
 
    pList := PersonList([]*Person{p1, p2, p3, p4, p5, p6}) 
    sort.Sort(pList) 
    fmt.Println(pList) 
 
    /*output: 
    [( Amy,19 ) ( Hanks,19 ) ( Tom,19 ) ( Tom,20 ) ( Jogn,21 ) ( Mike,23 )] */ 
}

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

标签:Go语言,sort,排序
0
投稿

猜你喜欢

  • 关于Python-pip安装失败问题及解决

    2021-03-13 05:07:41
  • Python制作简易计算器功能

    2023-05-06 19:53:47
  • python 实现控制鼠标键盘

    2023-08-04 09:37:56
  • python列表生成器常用迭代器示例详解

    2023-11-16 01:35:12
  • Python实现RGB等图片的图像插值算法

    2023-03-30 17:11:55
  • linux 部署apache服务的步骤

    2022-11-28 02:59:16
  • Sql 语句学习指南第1/2页

    2024-01-25 07:13:01
  • Dephi逆向工具Dede导出函数名MAP导入到IDA中的实现方法

    2023-04-09 06:31:40
  • Python web框架(django,flask)实现mysql数据库读写分离的示例

    2024-01-14 15:46:36
  • asp如何制作一个安全的页面?

    2010-06-29 21:22:00
  • Mysql导入TXT文件

    2012-01-05 19:01:10
  • Python中的配对函数zip()解读

    2021-04-14 20:54:33
  • Python高并发和多线程有什么关系

    2023-12-08 04:24:47
  • Go语言使用钉钉机器人推送消息的实现示例

    2024-05-09 14:57:37
  • python3 queue多线程通信

    2022-09-20 08:41:05
  • IE在DOM操作有表单控件时的bug

    2008-08-21 13:00:00
  • SqlServer数据库备份与还原的实现步骤

    2024-01-28 13:08:40
  • 详解tensorflow实现迁移学习实例

    2022-02-06 01:43:22
  • MySQL数据库的约束使用实例

    2024-01-17 04:36:57
  • Python中模块(Module)和包(Package)的区别详解

    2021-06-17 09:05:22
  • asp之家 网络编程 m.aspxhome.com