兄弟连GO语言培训课程体系设计架构包括了区块链的基础语言Go语言、区块链后端技术体系、区块链公链、区块链分布式应用开发等内容讲解,以及到最后的面试指导和项目实战。课程由清华微软谷歌名师团队精心打造,历时半年时间共同研发而出。
Go自定义排序
有的时候我们希望排序不是仅仅按照自然顺序排序。例如,我们希望按照字符串的长度来对一个字符串数
组排序而不是按照字母顺序来排序。这里我们介绍一下Go的自定义排序。
packagemain
import"sort"
import"fmt"
//为了能够使用自定义函数来排序,我们需要一个
//对应的排序类型,比如这里我们为内置的字符串
//数组定义了一个别名ByLength
typeByLength[]string
//我们实现了sort接口的Len,Less和Swap方法
//这样我们就可以使用sort包的通用方法Sort
//Len和Swap方法的实现在不同的类型之间大致
//都是相同的,只有Less方法包含了自定义的排序
//逻辑,这里我们希望以字符串长度升序排序
func(sByLength)Len()int{
returnlen(s)
}
func(sByLength)Swap(i,jint){
s,s[j]=s[j],s
}
func(sByLength)Less(i,jint)bool{
returnlen(s)
}
//一切就绪之后,我们就可以把需要进行自定义排序
//的字符串类型fruits转换为ByLength类型,然后使用
//sort包的Sort方法来排序
funcmain(){
fruits:=[]string{"peach","banana","kiwi"}
sort.Sort(ByLength(fruits))
fmt.Println(fruits)
}
输出结果
[kiwipeachbanana]
同样的,对于其他的类型,使用这种方法,我们可以为Go的切片提供任意的排序方法。归纳一下就是:
1.创建自定义排序类型
2.实现sort包的接口方法Len,Swap和Less
3.使用sort.Sort方法来排序