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
}
  • 记住哈,后面要用哦,直接上图片
  • 完成相对应的三个方法,直接可以进行一个对结构体的排序哈,还是很好的。

好了好了,今天的排序就到这里了,我继续加油了,兄弟们冲冲冲