go学习笔记——自定义排序

自定义排序

在 Go 中使用自定义函数进行排序,我们需要实现sort.Interface 接口的 LenLessSwap 方法, 这样我们就可以使用 sort 包的通用 Sort 方法了

package main

import (
    "fmt"
    "sort"
)

type byLength []string

func (s byLength) Len() int {
    return len(s)
}

func (s byLength) Swap(i, j int) {
    s[i], s[j] = s[j], s[i]
}

func (s byLength) Less(i, j int) bool {
    return len(s[i]) < len(s[j])
}

func main() {
    // go内建排序方法
    strs := []string{"b", "c", "a"}
    sort.Strings(strs)
    fmt.Println("strs sorted:", strs)

    fruits := []string{"oragen", "banana", "apple", "kiwi"}
    fmt.Println("origin:", fruits)
    sort.Sort(byLength(fruits))
    fmt.Println("sorted:", fruits)
}

Len 和 Swap 在各个类型中的实现都差不多, Less 将控制实际的自定义排序逻辑。 在这个的例子中,我们想按字符串长度递增的顺序来排序, 所以这里使用了 len(s[i]) 和 len(s[j]) 来实现 Less。

暂无评论

发送评论 编辑评论


				
上一篇
下一篇