首頁 >後端開發 >Golang >如何根據多個條件對 Go 中具有嵌套切片的結構切片進行排序?

如何根據多個條件對 Go 中具有嵌套切片的結構切片進行排序?

DDD
DDD原創
2024-10-28 21:10:031018瀏覽

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

使用巢狀切片對結構體切片進行排序

在Go 中,您可以使用內建的排序包對自訂結構體切片進行排序。考慮以下程式碼,它定義了兩個結構體Parent 和Child,表示父子關係:

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

type Child struct {
    id string
}</code>

假設您有一個Parent 結構體切片,並希望根據兩個條件對它們進行排序:

排序標準:

  1. 依Parent.id 升序對Parent 切片進行排序。
  2. 對於每個 Parent,按 Child 對子切片進行排序。 id 在父級中依升序排列。

解:

提供的程式碼片段符合排序要求:

``
// 依排序需求:

``
return parents[i].id < parents[j].id })
// 依序切片中的每個Parent進行排序

sort.Slice(parents, func(i, j int) bool {

sort.Slice(parent.children, func(i, j int) bool { 
    return parent.children[i].id < parent.children[j].id })
//對於每個Parent,對每個Child進行排序Children slice by Id

for _,parent := rangeparents {

}

``
  1. sort.Slice函數直接對切片進行操作,無需對於中間容器。 >
  2. 它根據Parent.id 對父切片進行排序。

結果與預期輸出一致:

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

以上是如何根據多個條件對 Go 中具有嵌套切片的結構切片進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn