」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何根據多個條件對 Go 中具有嵌套切片的結構切片進行排序?

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

發佈於2024-11-08
瀏覽:433

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

使用嵌套切片對結構體切片進行排序

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

type Parent struct {
    id       string
    children []Child
}

type Child struct {
    id string
}

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

排序標準:

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

解決方案:

提供的程式碼片段滿足排序要求:

``
/ / 按Id
sort.Slice(parents, func(i, j int) bool 將父切片中的每個 Parent 進行排序{

return parents[i].id 

//對於每個Parent,按Id對子切片中的每個Child進行排序
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