Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengisih Sepotong Struktur dengan Medan Slice Bersarang dalam Go?

Bagaimana untuk Mengisih Sepotong Struktur dengan Medan Slice Bersarang dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 06:18:29328semak imbas

How to Sort a Slice of Structs with Nested Slice Fields in Go?

Isih mengikut Medan Slice

Dalam Go, anda mungkin menghadapi senario di mana anda perlu mengisih kepingan struct yang mengandungi medan kepingan bersarang lagi. Pertimbangkan contoh di bawah:

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

type Child struct {
    id string
}</code>

Andaikan anda mempunyai sekeping struct Induk dengan nilai berikut:

<code class="go">parents := make([]Parent, 0)

p1 := Parent {
    "3",
    []Child {
        {"2"},
        {"3"},
        {"1"},
    },
}

p2 := Parent {
    "1",
    []Child {
        {"8"},
        {"9"},
        {"7"},
    },
}

p3 := Parent {
    "2",
    []Child {
        {"5"},
        {"6"},
        {"4"},
    },
}             

parents = append(parents, p1, p2, p3)</code>

Matlamatnya adalah untuk mengisih hirisan ibu bapa berdasarkan dua kriteria:

    Untuk mencapai pengisihan yang diingini, anda boleh menggunakan fungsi isihan.Slice untuk mengisih hirisan induk dan hirisan anak bersarang. Berikut ialah kodnya:
  1. Kod ini mengisih ibu bapa terlebih dahulu, memastikan ibu bapa disusun dalam tertib menaik berdasarkan medan id mereka. Selepas itu, bagi setiap ibu bapa, ia menyusun anak-anak dengan cara yang sama.

Hasil Jangkaan:

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Sepotong Struktur dengan Medan Slice Bersarang dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn