Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggabungkan peta di Golang dan mengelakkan nilai pendua?

Bagaimana untuk menggabungkan peta di Golang dan mengelakkan nilai pendua?

Barbara Streisand
Barbara Streisandasal
2024-10-30 12:32:03113semak imbas

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>

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>

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>

Output:

map[id_1:[val_1 val_3] id_2:[val_2]]

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!

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