「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Goで構造体のスライスを複数のフィールドで並べ替えるにはどうすればよいですか?

Goで構造体のスライスを複数のフィールドで並べ替えるにはどうすればよいですか?

2024 年 11 月 15 日に公開
ブラウズ:809

How to Sort a Slice of Structs by Multiple Fields in Go?

複数のフィールドによるスライス オブジェクトの並べ替え

複数の条件による並べ替え

次の親構造体と子構造体を考えます:

type Parent struct {
    id       string
    children []Child
}

type Child struct {
    id string
}

事前に定義された値を持つ Parent 構造体のスライスがあるとします。

parents := []Parent{
    {
        "3",
        []Child{
            {"2"},
            {"3"},
            {"1"},
        },
    },
    {
        "1",
        []Child{
            {"8"},
            {"9"},
            {"7"},
        },
    },
    {
        "2",
        []Child{
            {"5"},
            {"6"},
            {"4"},
        },
    },
}

並べ替え要件:

私たちの目標は、2 つの基準に基づいて親スライスを並べ替えることです:

  1. 親構造体を昇順で並べ替える
  2. 各親構造体内で、子スライスを ID の昇順で並べ替えます。 field.

解決策:

この並べ替えを実現するには、カスタム比較に基づいてスライスを並べ替える柔軟な方法を提供する sort.Slice 関数を利用します。機能。コードは次のとおりです:

// Sort parents by their ID
sort.Slice(parents, func(i, j int) bool { return parents[i].id 

この並べ替えアルゴリズムは両方の基準を効率的に処理し、親スライスが希望どおりに順序付けされるようにします。

期待される結果:

並べ替えられたスライスは次のようになります。次の構造に似ています:

[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3