Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengisih Sepotong Struktur mengikut Pelbagai Medan dalam Go?

Bagaimana untuk Mengisih Sepotong Struktur mengikut Pelbagai Medan dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-10-29 20:07:30
asal
540 orang telah melayarinya

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

Isih Objek Slice mengikut Pelbagai Medan

Isih Mengikut Pelbagai Kriteria

Pertimbangkan struct Ibu Bapa dan Anak berikut:

type Parent struct {
    id       string
    children []Child
}

type Child struct {
    id string
}
Salin selepas log masuk

Katakan kita mempunyai sekeping struct Induk dengan nilai yang dipratentukan:

parents := []Parent{
    {
        "3",
        []Child{
            {"2"},
            {"3"},
            {"1"},
        },
    },
    {
        "1",
        []Child{
            {"8"},
            {"9"},
            {"7"},
        },
    },
    {
        "2",
        []Child{
            {"5"},
            {"6"},
            {"4"},
        },
    },
}
Salin selepas log masuk

Keperluan Isih:

Matlamat kami adalah untuk mengisih hirisan ibu bapa berdasarkan dua kriteria:

  1. Isih struct Ibu Bapa dalam tertib menaik medan id mereka.
  2. Dalam setiap struct Ibu Bapa, isih kepingan kanak-kanak dalam tertib menaik medan id.

Penyelesaian:

Untuk mencapai pengisihan ini, kami menggunakan fungsi isihan.Slice, yang menyediakan cara yang fleksibel untuk mengisih kepingan berdasarkan fungsi perbandingan tersuai. Berikut ialah kodnya:

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

Algoritma pengisihan ini mengendalikan kedua-dua kriteria dengan cekap, memastikan potongan ibu bapa dipesan seperti yang dikehendaki.

Hasil Jangkaan:

Kepingan yang diisih hendaklah menyerupai struktur berikut:

[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Sepotong Struktur mengikut Pelbagai Medan 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