カスタムの並べ替え機能を使用して言語の例の最初から行くExample39

時々、私たちは、コレクションをソートするためにさまざまな自然やソート方法のコレクションを使用します。例えば、我々は文字ではなく、最初のアルファベット順にソート文字列の長さをフォローしたいです。ここに行くのカスタムソートの例です。

例:

以下のための主要なパッケージ変更
 のインポートFMT 
    ソート

 // ソートゴーでカスタム関数を使用するには
、// タイプ私たちが対応を必要とします。
// ここでは、文字列型のbyLengthタイプのビルトイン[]エイリアスの一つ作成し、
タイプのbyLength []の文字列

 // 我々は、タイプ、少ない、およびスワップ方法でレンsort.Interfaceを達成
 // 私たちは、ソートに使用できるように、パケットの一般的な分類方法、レンとスワップ 
 //は、一般的にはあまり実際の発注のカスタムロジックを制御し、それぞれのタイプが似ています。
// この例では、私たちはここで使用して、ソートされた順序に従って、文字列の長さを増やしたいLEN(S [i])とし、LEN(S [J])。
FUNC(S byLength)レン(){int型の
    リターンLEN(S)
} 

FUNC(S byLength)スワップ(I、J INT){ 
    S [I]、S [J] = S [J]、S [I]
}

FUNC(S byLength)以下(I、JのINT){BOOLの
    戻り LEN(S [I])< LEN(S [J])
} 


FUNCメイン(){
     // すべての準備ができ、我々は今、元のを渡すことができ私たちのカスタムソートを達成するためにbyLengthにsortstrスライス推移。
    // この遷移スライスにsort.Sortのアプローチを使用しています。
    sortstr: = [] {文字列" ABC "" ABCD "" AB&" } 
    sort.Sort(byLength(sortstr))
    fmt.Println(sortstr)
}

結果:

$実行example.goを行く
[AB型のABC ABCD]

 

座標:前の例    次の例

 

おすすめ

転載: www.cnblogs.com/yhleng/p/11775087.html