程序里面经常会遇到各种排序问题,大多数情况下我们都不会直接去写一个排序算法,会直接调用程序自带的包进行实现,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排序的的结果了;
本文链接:https://iokde.com/post/golang-struct-sort.html,参与评论 »
--EOF--
发表于 2022-12-26 14:57:31。
本站使用「署名 4.0 国际」创作共享协议,转载请注明作者及原网址。tools更多说明 »
提醒:本文最后更新于 526 天前,文中所描述的信息可能已发生改变,请谨慎使用。
Comments