040_関数を使用したソートのカスタマイズ
1094 ワード
コードのデモ:
コード実行結果:
コード解読:では、カスタマイズされた方法でソートされる場合があります.カスタムソートを実現するにはsortインタフェースのLen,Less,Swapメソッド を実現する必要がある.これによりsortパケットの一般的な方法Sortを用いて のカスタムソートを実現することができる. LenとSwapメソッドの実装は、異なるタイプの間でほぼ同じであり、Lessメソッドのみがカスタムソートロジックを含み、この例では文字列長昇順で をソートする.本例では、内蔵文字列スライスをソートするためにByLengthタイプを定義し、最終的にfruitsをByLengthタイプに変換してSortを用いてソート を行う. goのスライスをカスタムソートする方法は、1.カスタムソートタイプを実装します.2.sortパケットを実現するSortメソッドLen,SwapおよびLess;3.sortを使用する.Sortメソッドによる のソート
package main
import "fmt"
import "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() {
fruits := []string{"peach", "banana", "kiwi"}
sort.Sort(ByLength(fruits))
fmt.Println(fruits)
}
コード実行結果:
[kiwi peach banana]
コード解読: