Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menggabungkan Berbilang Peta di Golang dan Mengendalikan Nilai Pendua?
Anda menyasarkan untuk menggabungkan berbilang peta, seperti map1 = [id: id_1, val: val_1], map2 = [id: id_2, val: val_2], dan map3 = [id: id_1, val: val_3], ke dalam peta hasil tunggal. Penggabungan berasaskan kunci diperlukan, menghasilkan peta hasil seperti ini:
result_map = [id: id_1 val: {val_1, val_3}, id: id_2 var: {val_2}]
Anda boleh menggabungkan peta tanpa masalah. Walau bagaimanapun, memandangkan peta hasil boleh mengandungi berbilang nilai untuk kunci yang sama, adalah bijak untuk menggunakan kepingan sebagai jenis nilai, cth., map[rentetan][]rentetan.
Operasi gabungan melibatkan lelaran pada peta untuk digabungkan, kemudian tambahkan nilai daripada peta sumber kepada kepingan yang dikaitkan dengan kunci yang sama dalam peta hasil. Ingat untuk menetapkan semula kepingan yang dilanjutkan kembali ke kekunci peta hasil.
Berikut ialah pendekatan asas:
<code class="go">func merge(ms ...map[string]string) map[string][]string { res := map[string][]string{} for _, m := range ms { for k, v := range m { res[k] = append(res[k], v) } } return res }</code>
Kaedah gabungan() yang dinyatakan di atas membenarkan entri pendua . Sebagai contoh, jika "id_1": "val_1" muncul dalam berbilang peta input, ia akan diulang dalam peta sasaran, cth., "id_1": ["val_1", "val_1", "val_x"]. Untuk menghapuskan pendua dan memastikan "id_1": "val_1" muncul sekali sahaja, semakan tambahan diperlukan:
<code class="go">func merge(ms ...map[string]string) map[string][]string { res := map[string][]string{} for _, m := range ms { srcMap: for k, v := range m { for _, v2 := range res[k] { if v == v2 { continue srcMap } } res[k] = append(res[k], v) } } return res }</code>
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Peta di Golang dan Mengendalikan Nilai Pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!