考慮以下父級和子級結構:
type Parent struct { id string children []Child } type Child struct { id string }
假設我們有一個預定義值的Parent 結構體切片:
parents := []Parent{ { "3", []Child{ {"2"}, {"3"}, {"1"}, }, }, { "1", []Child{ {"8"}, {"9"}, {"7"}, }, }, { "2", []Child{ {"5"}, {"6"}, {"4"}, }, }, }
排序要求:
我們的目標是根據兩個標準將parents切片排序:
解:
為了實現這種排序,我們利用sort.Slice 函數,它提供了一種基於自訂比較函數對切片進行排序的靈活方法。程式碼如下:
<code class="go">// Sort parents by their ID sort.Slice(parents, func(i, j int) bool { return parents[i].id < parents[j].id }) // Iterate over each parent and sort their children by ID for _, parent := range parents { sort.Slice(parent.children, func(i, j int) bool { return parent.children[i].id < parent.children[j].id }) }</code>
此排序演算法有效處理這兩個條件,確保父切片依需要排序。
預期結果:
排序後的切片應類似下列結構:
[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
以上是如何在 Go 中按多個欄位對結構體切片進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!