Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menggabungkan Berbilang Peta di Golang Sambil Mengelakkan Nilai Pendua?

Bagaimana untuk Menggabungkan Berbilang Peta di Golang Sambil Mengelakkan Nilai Pendua?

Susan Sarandon
Lepaskan: 2024-10-27 15:39:02
asal
947 orang telah melayarinya

How to Merge Multiple Maps in Golang While Avoiding Duplicate Values?

Menggabungkan Peta di Golang

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Output:

map[id_1:[val_1 val_3] id_2:[val_2]]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan