/*
go自定义排序
有的时候我们希望排序不是仅仅按照自然顺序排序
例如我们希望按照字符串的长度来对一个字符串
数组排序而不是按照字母顺序来排序
这里我们介绍一下go的自定义排序
*/
package main
import (
"fmt"
"sort"
)
/*
为了能够使用自定义函数来排序
我们需要一个对应的排序类型
*/
type ByLength []string
/*
实现sort接口的
len
Less
Swap
方法
Less方法包含了自定义的排序逻辑
*/
func (b *ByLength) Len() int {
return len(b)
}
func (b *ByLength) Swap(i, j int) {
b[i], b[j] = b[j], b[i]
}
func (b *ByLength) Less(i, j int) bool {
return len(s[i]) < len(s[j])
}
/*
*/
func main() {
fruits := []string{"peach", "banana", "kiwi"}
sort.Sort(ByLength(fruits))
fmt.Println(fruits)
}
/*
1.创建自定义排序类型
2.实现sort包的接口方法 Len Swap Less
3.使用sort.Sort()方法来排序
*/