首頁  >  文章  >  後端開發  >  如何在 Golang 中合併地圖同時避免重複值?

如何在 Golang 中合併地圖同時避免重複值?

Susan Sarandon
Susan Sarandon原創
2024-10-27 18:45:01333瀏覽

How to Merge Maps in Golang While Avoiding Duplicate Values?

Golang 中的合併映射

在Golang 中,合併多個映射需要考慮所需結果映射的值類型,因為合併後的值可以包含與相同鍵關聯的多個值。為此,建議使用切片作為結果對應的值類型。

簡單合併

要執行簡單合併,提供的可以修改範例程式碼,將來源對應中的值附加到與結果對應中相同鍵關聯的切片:

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

在此範例中,ms 是一個可變參數,允許傳遞任意數量的映射到合併函數。

避免重複

要過濾掉重複項並確保值在結果映射中僅列出一次,可以修改代碼如下所示:

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

這裡,在將值附加到結果映射之前,程式碼會檢查之前是否已新增(鍵,值)對,以防止重複。

以上是如何在 Golang 中合併地圖同時避免重複值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn