Home > Backend Development > Golang > How to Merge Multiple Maps in Golang and Handle Duplicate Values?

How to Merge Multiple Maps in Golang and Handle Duplicate Values?

Mary-Kate Olsen
Release: 2024-10-29 09:37:30
Original
941 people have browsed it

How to Merge Multiple Maps in Golang and Handle Duplicate Values?

Merging Maps in Golang

You aim to combine multiple maps, such as map1 = [id: id_1, val: val_1], map2 = [id: id_2, val: val_2], and map3 = [id: id_1, val: val_3], into a single result map. Key-based merging is required, resulting in a result map like this:

result_map = [id: id_1 val: {val_1, val_3}, id: id_2 var: {val_2}]

A Simple Merge

You can merge maps without issue. However, since the result map can contain multiple values for the same key, it's wise to use a slice as the value type, e.g., map[string][]string.

Merge operation involves iterating over the maps to be merged, then appending values from source maps to slices associated with the same key in the result map. Remember to reassign the extended slices back to the result map's keys.

Here's a basic approach:

<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>
Copy after login

Avoiding Duplicates

The aforementioned merge() method allows duplicate entries. For instance, if "id_1": "val_1" appears in multiple input maps, it will be repeated in the target map, e.g., "id_1": ["val_1", "val_1", "val_x"]. To eliminate duplicates and ensure "id_1": "val_1" appears only once, an additional check is required:

<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 {
            for _, v2 := range res[k] {
                if v == v2 {
                    continue srcMap
                }
            }
            res[k] = append(res[k], v)
        }
    }
    return res
}</code>
Copy after login

The above is the detailed content of How to Merge Multiple Maps in Golang and Handle Duplicate Values?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template