>  기사  >  백엔드 개발  >  중복된 값을 피하면서 Golang에서 여러 지도를 병합하는 방법은 무엇입니까?

중복된 값을 피하면서 Golang에서 여러 지도를 병합하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-27 15:39:02834검색

How to Merge Multiple Maps in Golang While Avoiding Duplicate Values?

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>

중복 방지:

결과 맵에서 중복을 방지하려면 병합 기능을 수정하여 기존 항목을 확인할 수 있습니다. 추가 전 값:

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

테스트:

<code class="go">m1 := map[string]string{"id_1": "val_1"}
m2 := map[string]string{"id_2": "val_2", "id_1": "val_1"}
m3 := map[string]string{"id_1": "val_3"}

res := merge(m1, m2, m3)
fmt.Println(res)</code>

출력:

map[id_1:[val_1 val_3] id_2:[val_2]]

이는 맵 병합, 동일한 키와 관련된 값 유지 및 중복 방지.

위 내용은 중복된 값을 피하면서 Golang에서 여러 지도를 병합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.