首頁 > 後端開發 > Golang > 主體

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

Susan Sarandon
發布: 2024-10-27 18:45:01
原創
332 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!