入れ子になったスライスを使用した構造体のスライスの並べ替え
Go では、組み込みの並べ替えパッケージを使用してカスタム構造体のスライスを並べ替えることができます。親子関係を表す 2 つの構造体、Parent と Child を定義する次のコードを考えてみましょう。
type Parent struct {
id string
children []Child
}
type Child struct {
id string
}
親構造体のスライスがあり、それらを 2 つの基準に基づいて並べ替えたいとします:
並べ替え基準:
解決策:
提供されたコード スニペットは並べ替え要件に対応しています:
``
// 親スライス内の各親を 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 関数はスライスに対して直接動作し、中間コンテナが必要です。
- Parent.id に基づいて親スライスを並べ替えます。
- 並べ替えられた親スライス内の各親について、ネストされたループを使用して、Child.id に基づいて子のスライスを並べ替えます。
結果は予想される出力と一致します:
[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3