Pertimbangkan struct Ibu Bapa dan Anak berikut:
type Parent struct { id string children []Child } type Child struct { id string }
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"}, }, }, }
Keperluan Isih:
Matlamat kami adalah untuk mengisih hirisan ibu bapa berdasarkan dua kriteria:
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>
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}]}]
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!