Mengisih Sekeping Struktur dengan Kepingan Bersarang
Dalam Go, anda boleh mengisih kepingan struct tersuai menggunakan pakej isihan terbina dalam. Pertimbangkan kod berikut yang mentakrifkan dua struct, Ibu Bapa dan Anak, yang mewakili hubungan ibu bapa-anak:
<code class="go">type Parent struct { id string children []Child } type Child struct { id string }</code>
Anggapkan anda mempunyai sepotong struct Ibu Bapa dan ingin mengisihnya berdasarkan dua kriteria:
Kriteria Isih:
Penyelesaian:
Coretan kod yang disediakan menangani keperluan pengisihan:
``
// isih setiap Ibu Bapa dalam ibu bapa hiris mengikut Id
isih.Isih(ibu bapa, func(i, j int) bool {
return parents[i].id < parents[j].id })
// untuk setiap Ibu Bapa, isih setiap Anak dalam kanak-kanak dihiris mengikut Id
untuk _, ibu bapa := julat ibu bapa {
sort.Slice(parent.children, func(i, j int) bool { return parent.children[i].id < parent.children[j].id })
}
``
Isi. Fungsi slice beroperasi secara langsung pada kepingan, menghapuskan keperluan untuk bekas perantaraan.
Hasilnya sejajar dengan output yang dijangkakan:
[{1 [{7} {8} {9}]} {2 [{4} {5} {6}]} {3 [{1} {2} {3}]}]
Atas ialah kandungan terperinci Bagaimanakah anda mengisih sekeping struct dengan kepingan bersarang dalam Go berdasarkan berbilang kriteria?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!