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

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

程序员文章站 2022-06-24 12:41:54
本文实例讲述了go语言使用sort包对任意类型元素的集合进行排序的方法。分享给大家供大家参考。具体如下: 使用sort包的函数进行排序时,集合需要实现sort.intef...

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