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