golang结构体对象列表排序

程序里面经常会遇到各种排序问题,大多数情况下我们都不会直接去写一个排序算法,会直接调用程序自带的包进行实现,Go语言里面除了自带的基本类型排序外,如果实现对应的排序接口同样可以调用基础库进行排序,下面我们来学习如何利用go自带的函数对对象(struct)进行排序,直接上代码吧:

package main

import (
    "fmt"
    "sort"
)

func main() {
    s1 := Website{Age: 10, Name: "iokde.com", Score: 30}
    s2 := Website{Age: 10, Name: "blog.iokde.com", Score: 45}
    s3 := Website{Age: 11, Name: "oktools.iokde.com", Score: 20}
    s4 := Website{Age: 11, Name: "nav.iokde.com", Score: 60}
    var stu Students
    stu = append(stu, s1, s2, s3, s4)
    sort.Sort(stu)
    for i := 0; i <= len(stu)-1; i++ {
        fmt.Printf("Website is %+v \n ", stu[i])
    }
}

type Website struct {
    Score int
    Name  string
    Age   int
}

// 定义排序对象的列表
type Students []Website

// 实现sort排序的三个方法
func (s Students) Len() int { return len(s) }
func (s Students) Swap(i, j int) {
    s[i], s[j] = s[j], s[i]
}
func (s Students) Less(i, j int) bool {
    return s[i].Score < s[j].Score
}

直接运行对应代码,便可以得到按照score排序的的结果了;

本文链接:参与评论 »

--EOF--

提醒:本文最后更新于 526 天前,文中所描述的信息可能已发生改变,请谨慎使用。

Comments