ホームページ >バックエンド開発 >Golang >Go で複数の条件に基づいて、ネストされたスライスを含む構造体のスライスを並べ替えるにはどうすればよいでしょうか?

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

DDD
DDDオリジナル
2024-10-28 21:10:031019ブラウズ

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

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

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

<code class="go">type Parent struct {
    id       string
    children []Child
}

type Child struct {
    id string
}</code>

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

並べ替え基準:

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

解決策:

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

``
// 親スライス内の各親を 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. Parent.id に基づいて親スライスを並べ替えます。
  2. 並べ替えられた親スライス内の各親について、次を使用して Child.id に基づいて子スライスを並べ替えます。ネストされたループ。

結果は期待される出力と一致します:

[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]

以上がGo で複数の条件に基づいて、ネストされたスライスを含む構造体のスライスを並べ替えるにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。