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

 更新时间:2015年02月08日 12:12:53   作者:books1958  
这篇文章主要介绍了Go语言使用sort包对任意类型元素的集合进行排序的方法,实例分析了sort排序所涉及的方法与相关的使用技巧,需要的朋友可以参考下

本文实例讲述了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语言fsnotify接口实现监测文件修改

    Go语言fsnotify接口实现监测文件修改

    这篇文章主要为大家介绍了Go语言fsnotify接口实现监测文件修改的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • golang开发go包依赖管理godep使用教程

    golang开发go包依赖管理godep使用教程

    这篇文章主要为大家介绍了golang开发go包依赖管理godep使用教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • 一文带你深入了解Golang中的参数传递机制

    一文带你深入了解Golang中的参数传递机制

    值传递和引用传递是编程语言中两种主要的参数传递方式,决定了函数调用过程中实参如何影响形参以及函数内部对形参的修改是否会影响到原始实参,下面就跟随小编一起深入了解下golang中参数传递机制吧
    2024-01-01
  • Golang中slice切片的实现示例

    Golang中slice切片的实现示例

    Go语言中,切片是对数组的抽象,提供了更灵活的动态数组解决方案,本文就来介绍一下Golang中slice切片的实现示例,感兴趣的可以了解一下
    2024-09-09
  • 深入浅析Go中三个点(...)用法

    深入浅析Go中三个点(...)用法

    这篇文章主要介绍了深入浅析Go中三个点(...)用法,需要的朋友可以参考下
    2021-10-10
  • axios gin的GET和POST请求实现示例

    axios gin的GET和POST请求实现示例

    这篇文章主要为大家介绍了axios gin的GET和POST请求实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • Golang中的深拷贝与浅拷贝使用

    Golang中的深拷贝与浅拷贝使用

    本文主要介绍了Golang中的深拷贝与浅拷贝使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • golang struct 实现 interface的方法

    golang struct 实现 interface的方法

    这篇文章主要介绍了golang struct 实现 interface的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Go语言关于几种深度拷贝(deepcopy)方法的性能对比

    Go语言关于几种深度拷贝(deepcopy)方法的性能对比

    这篇文章主要介绍了Go语言关于几种深度拷贝(deepcopy)方法的性能对比,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • golang不到30行代码实现依赖注入的方法

    golang不到30行代码实现依赖注入的方法

    这篇文章主要介绍了golang不到30行代码实现依赖注入的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07

最新评论