【笔记】Go语言排序切片

前言

Go语言排序切片

排序整型切片

正序(从小到大)

1
2
3
var arg = sort.IntSlice{}

sort.Sort(arg)

倒序(从大到小)

1
2
3
var arg = sort.IntSlice{}

sort.Sort(sort.Reverse(arg))

排序浮点型切片

正序(从小到大)

1
2
3
var arg = sort.Float64Slice{}

sort.Sort(arg)

倒序(从大到小)

1
2
3
var arg = sort.Float64Slice{}

sort.Sort(sort.Reverse(arg))

排序字符串切片

正序(从小到大)

1
2
3
var arg = sort.StringSlice{}

sort.Sort(arg)

倒序(从大到小)

1
2
3
var arg = sort.StringSlice{}

sort.Sort(sort.Reverse(arg))

排序自定义结构体切片

定义自定义结构体

1
2
3
4
5
type User struct {
Id int
}

type UserSlice []User

实现接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Len 获取切片长度
func (userSlice UserSlice) Len() int {
return len(userSlice)
}

// Less 定义排序条件,如果返回false,就进行位置交换
func (userSlice UserSlice) Less(i, j int) bool {
return userSlice[i].Id < userSlice[j].Id
}

// Swap 定义元素交换方式
func (userSlice UserSlice) Swap(i, j int) {
userSlice[i], userSlice[j] = userSlice[j], userSlice[i]
}

调用排序方法

1
2
3
4
// 定义变量
var users = UserSlice{User{2}, User{1}, User{3}}
// 进行排序
sort.Sort(users)

完成

参考文献

哔哩哔哩——尚硅谷
知乎——敦煌的驼铃