本文讲解切片(数组)的排序,为什么是切片,而不是数组,因为数组是定长的,且不能改变长度,而切片是可扩展长度的,而且切片的传值排序会直接改变其本身的顺序
1. 普通排序
1.1 数字切片排序
a := []int{
4,5,7,3,2}
sort.Ints(a)
fmt.Println(a)
打印结果:
[2 3 4 5 7]
1.2 其他类型切片排序
类型 | 函数 |
---|---|
int | sort.Ints(a []int) |
int | sort.Float64s(a []float64) |
int | sort.Strings(a []string) |
2. 自定义实现排序
go提供了一个
sort
包,只要每个结构体实现了下面三个方法,既可以直接调用Sort
方法
func (a Type)Len() int {
}
func (a Type)Less(i,j int) bool {
}
func (a Type)Swap(i,j int){
}
举个栗子:
type Sd struct {
Id int
Score