Rumah > pembangunan bahagian belakang > Golang > 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
Lepaskan: 2024-10-27 06:18:29
asal
486 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan