go排序
为什么要写个这个呢。主要是前面做了文字版的学生管理系统。
然后里面用的map装,每次输出呢,顺序都不一样,这让我老闹心了。
然后我就去sort包里面搞搞呗。
但是呢,sort包里面只给封装好了int和string还有float64的排序。
而我的学生id用的是int64,这就有问题了,扔不进去呀,没办法,学了go自定义排序
- 那么在说自定义排序之前我们先看看官文文档给的封装好的排序吧
- 舒服呀
- 舒服+1
- 舒服+2
- 这些都是直接可以用的,去开发文档看就行
- 进去后在sort包下面查找即可。直接用就是爽
- 好了,直接进去主题,自定义排序吧
go自定义排序
- 我们先开发文档里面下手哈,我们直接找到sort.Sort函数
啥类型都能往里面塞对吧LenLessSwap
// 设置类型
type DIYType 类型
// 注意:这样设置是自定义类型,而 type DIYType = 类型 加等号是 设置类型别名
func (p DIYType) Len() int {
return len(p)
}
func (p DIYType) Less(i, j int) bool {
return p[i] < p[j]
}
func (p DIYType) Swap(i, j int) {
p[i], p[j] = p[j], p[i]
}
- 为什么要自定义类型呢?
- 因为类型包是别人的呢,我们改不了(笑哭) , 我们只能改自己的包
- 前面 (p DIYType) 这个使用来指定约束的,写了这个即表示只有这个类型可以调用我,这就是方法哦。
举个例子,上图 (这里我们用对 int64 进行排序举例哈)
- 这里我们设置一个结构体
// 一个学生结构体
type student struct {
id int64
name string
}
- 记住哈,后面要用哦,直接上图片
- 完成相对应的三个方法,直接可以进行一个对结构体的排序哈,还是很好的。
好了好了,今天的排序就到这里了,我继续加油了,兄弟们冲冲冲