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。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇