Bagaimana untuk menggabungkan peta di Golang dan mengelakkan nilai pendua?

Barbara Streisand
Lepaskan: 2024-10-30 12:32:03
asal
177 orang telah melayarinya

How to merge maps in Golang and avoid duplicate values?

Menggabungkan Peta di Golang

Menggabungkan berbilang peta menjadi satu peta bercantum di Golang ialah tugas biasa. Katakan anda mempunyai tiga peta:

  • map1 = {"id": "id_1", "val": "val_1"}
  • map2 = {"id": "id_2" , "val": "val_2"}
  • map3 = {"id": "id_1", "val": "val_3"}

Matlamatnya adalah untuk menggabungkan peta ini berdasarkan kekunci id, menghasilkan:

  • result_map = {"id": "id_1", "val": {"val_1", "val_3"}, "id": "id_2" , var: {"val_2"}}

Simple Cantuman

Untuk menggabungkan peta, anda boleh mengulangi setiap peta input dan menambah nilai yang dikaitkan dengan setiap kekunci kepada kepingan 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

Dalam sesetengah kes, anda mungkin mahu mengelakkan nilai pendua dalam peta yang digabungkan. Untuk mencapai matlamat ini, semak pendua sebelum melampirkan.

<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

Contoh Penggunaan

<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

Atas ialah kandungan terperinci Bagaimana untuk menggabungkan peta di Golang dan 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