時々、私たちは、コレクションをソートするためにさまざまな自然やソート方法のコレクションを使用します。例えば、我々は文字ではなく、最初のアルファベット順にソート文字列の長さをフォローしたいです。ここに行くのカスタムソートの例です。
例:
以下のための主要なパッケージ変更 のインポート( 「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]
座標:前の例 次の例