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