使用嵌套切片對結構體切片進行排序
在Go 中,您可以使用內建的排序包對自訂結構體切片進行排序。考慮以下程式碼,它定義了兩個結構體 Parent 和 Child,表示父子關係:
type Parent struct {
id string
children []Child
}
type Child struct {
id string
}
假設您有一個Parent 結構體切片,並希望根據兩個標準對它們進行排序:
排序標準:
解決方案:
提供的程式碼片段滿足排序要求:
``
/ / 按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函數直接對切片進行操作,消除了需要中間容器。
- 它根據 Parent.id 對父切片進行排序。
- 對於已排序父切片中的每個父切片,它使用嵌套循環根據 Child.id 對子切片進行排序。
結果與預期輸出一致:
[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3