Masalah:
Gabungkan berbilang peta, mengekalkan nilai yang dikaitkan dengan kunci yang sama merentas peta.
Pendekatan Awal:
Kod yang disediakan cuba menggabungkan peta dengan mengulangi setiap peta, menambah nilai pada peta hasil berdasarkan kekunci padanan. Walau bagaimanapun, pendekatan ini tidak mengendalikan nilai pendua dalam peta hasil.
Gabungan Mudah:
Fungsi cantum yang disemak semula boleh dilaksanakan untuk mengendalikan pendua dengan menambahkan nilai pada kepingan dikaitkan dengan kekunci dalam peta hasil.
<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>
Mengelakkan Pendua:
Untuk mengelakkan pendua dalam peta hasil, fungsi cantum boleh diubah suai untuk menyemak sedia ada nilai sebelum menambahkan:
<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 { // Check if (k,v) was added before: for _, v2 := range res[k] { if v == v2 { continue srcMap } } res[k] = append(res[k], v) } } return res }</code>
Pengujian:
<code class="go">m1 := map[string]string{"id_1": "val_1"} m2 := map[string]string{"id_2": "val_2", "id_1": "val_1"} m3 := map[string]string{"id_1": "val_3"} res := merge(m1, m2, m3) fmt.Println(res)</code>
Output:
map[id_1:[val_1 val_3] id_2:[val_2]]
Ini menunjukkan penggabungan peta, mengekalkan nilai yang dikaitkan dengan kunci yang sama dan mengelakkan pendua.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Peta di Golang Sambil Mengelakkan Nilai Pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!