入れ子になったスライスを使用した構造体のスライスの並べ替え
Go では、組み込みの並べ替えパッケージを使用してカスタム構造体のスライスを並べ替えることができます。親子関係を表す 2 つの構造体、Parent と Child を定義する次のコードを考えてみましょう。
<code class="go">type Parent struct { id string children []Child } type Child struct { id string }</code>
Parent 構造体のスライスがあり、それらを 2 つの基準に基づいて並べ替えるとします。
並べ替え基準:
解決策:
提供されたコード スニペットは並べ替え要件に対応しています:
``
// 親スライス内の各親を Id
sort.Slice(parents, func(i, j int) bool {
return parents[i].id < parents[j].id })
// 親ごとに、各子を子は Id
for _ でスライス、親 := range 親 {
sort.Slice(parent.children, func(i, j int) bool { return parent.children[i].id < parent.children[j].id })
}
``
sort.Slice 関数はスライスに対して直接動作するため、必要がありません。中間コンテナの場合。
結果は期待される出力と一致します:
[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
以上がGo で複数の条件に基づいて、ネストされたスライスを含む構造体のスライスを並べ替えるにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。