Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menggabungkan Berbilang Peta di Golang dan Mengendalikan Nilai Pendua?

Bagaimana untuk Menggabungkan Berbilang Peta di Golang dan Mengendalikan Nilai Pendua?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-29 09:37:30957semak imbas

How to Merge Multiple Maps in Golang and Handle Duplicate Values?

Menggabungkan Peta di Golang

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}]

Gabungan Mudah

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>

Mengelakkan Pendua

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!

Kenyataan:
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