」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Go 中按多個欄位對結構體切片進行排序?

如何在 Go 中按多個欄位對結構體切片進行排序?

發佈於2024-11-15
瀏覽:427

How to Sort a Slice of Structs by Multiple Fields in Go?

按多個欄位對切片物件進行排序

依多個條件排序

考慮以下Parent 和Child 結構:

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"},
        },
    },
}

排序要求:

我們的目標是根據兩個標準對父切片進行排序:

  1. 按升序對父結構進行排序
  2. 在每個父結構中,依id 欄位的升序對子切片進行排序。

解決方案:

為了實現這種排序,我們利用sort.Slice 函數,它提供了一種基於自定義比較函數對切片進行排序的靈活方法。代碼如下:

// Sort parents by their ID
sort.Slice(parents, func(i, j int) bool { return parents[i].id 

此排序演算法有效地處理這兩個條件,確保父切片按需要排序。

預期結果:

排序後的切片應該類似於以下結構:

[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3