Как найти сумму двух map-ов в Golang?

В Go можно найти сумму двух map-ов, объединив их значения в новом map. Для этого можно использовать следующий код:

package main

import "fmt"

func main() {
    // Создаем два map-а
    map1 := map[string]int{
        "a": 1,
        "b": 2,
    }
    map2 := map[string]int{
        "b": 3,
        "c": 4,
    }

    // Создаем новый map, в котором будем хранить сумму значений
    sum := make(map[string]int)

    // Перебираем все ключи первого map-а
    for key, value := range map1 {
        // Проверяем, есть ли такой ключ во втором map-е
        if val, ok := map2[key]; ok {
            // Если ключ есть втором map-е, то добавляем сумму значений в новый map
            sum[key] = value + val
        } else {
            // Если ключа нет во втором map-е, то просто добавляем значение из первого map-а
            sum[key] = value
        }
    }

    // Перебираем все ключи второго map-а
    for key, value := range map2 {
        // Если ключа нет в новом map-е, то добавляем значение из второго map-а
        if _, ok := sum[key]; !ok {
            sum[key] = value
        }
    }

    // Выводим результат
    fmt.Println(sum) // map[a:1 b:5 c:4]
}

В данном примере создаются два map-а: map1 и map2. Затем создается новый map sum, в котором будет храниться сумма значений.

Далее выполняется два цикла for, первый цикл перебирает все ключи первого mapmap1, проверяет наличие такого же ключа во втором mapmap2. Если ключ есть во втором map-е, то суммирует значения и добавляет их в sum. Если ключа нет во втором map-е, то просто добавляет значение из первого map-а.

Второй цикл for перебирает все ключи второго mapmap2 и добавляет значения, которых нет в sum.

В результате выполнения кода, выводится новый map sum, в котором хранится сумма значений двух исходных map-ов. В данном примере результат будет map[a:1 b:5 c:4].