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

Go で複数の基準に基づいて、ネストされたスライスを含む構造体のスライスを並べ替えるにはどうすればよいでしょうか?

2024 年 11 月 8 日に公開
ブラウズ:109

How do you sort a slice of structs with nested slices in Go based on multiple criteria?

入れ子になったスライスを使用した構造体のスライスの並べ替え

Go では、組み込みの並べ替えパッケージを使用してカスタム構造体のスライスを並べ替えることができます。親子関係を表す 2 つの構造体、Parent と Child を定義する次のコードを考えてみましょう。

type Parent struct {
    id       string
    children []Child
}

type Child struct {
    id string
}

親構造体のスライスがあり、それらを 2 つの基準に基づいて並べ替えたいとします:

並べ替え基準:

  1. 並べ替えParent.id による親スライスを昇順で並べます。
  2. 各親について、子のスライスを Child.id によって並べ替えます。

解決策:

提供されたコード スニペットは並べ替え要件に対応しています:

``
// 親スライス内の各親を Id
sort.Slice(parents, func(i, j int) bool で並べ替えます{

return parents[i].id 

// 各親について、子スライス内の各子を Id
for _,parent := rangeparents {

sort.Slice(parent.children, func(i, j int) bool { 
    return parent.children[i].id 

}
``

sort.Slice 関数はスライスに対して直接動作し、中間コンテナが必要です。

  1. Parent.id に基づいて親スライスを並べ替えます。
  2. 並べ替えられた親スライス内の各親について、ネストされたループを使用して、Child.id に基づいて子のスライスを並べ替えます。

結果は予想される出力と一致します:

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

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

Copyright© 2022 湘ICP备2022001581号-3