Golang에서 맵을 병합하고 중복 값을 피하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-10-30 12:32:03
원래의
125명이 탐색했습니다.

How to merge maps in Golang and avoid duplicate values?

Golang에서 지도 병합

Golang에서 여러 지도를 하나의 병합된 지도로 결합하는 것은 일반적인 작업입니다. 세 개의 지도가 있다고 가정해 보겠습니다.

  • map1 = {"id": "id_1", "val": "val_1"}
  • map2 = {"id": "id_2" , "val": "val_2"}
  • map3 = {"id": "id_1", "val": "val_3"}

목표는 이러한 지도를 병합하는 것입니다. id 키를 기반으로 결과는 다음과 같습니다.

  • result_map = {"id": "id_1", "val": {"val_1", "val_3"}, "id": "id_2" , var: {"val_2"}}

간단한 병합

맵을 병합하려면 각 입력 맵을 반복하고 연관된 값을 추가할 수 있습니다. 각 키를 결과 맵의 슬라이스에 연결합니다.

<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!