문제:
여러 지도를 병합하여 지도 전체에서 동일한 키와 연관된 값을 유지합니다.
초기 접근 방식:
제공된 코드는 각 맵을 반복하고 일치하는 키를 기반으로 결과 맵에 값을 추가하여 맵을 병합하려고 시도합니다. 그러나 이 접근 방식은 결과 맵 내의 중복 값을 처리하지 않습니다.
간단한 병합:
슬라이스에 값을 추가하여 중복을 처리하도록 수정된 병합 함수를 구현할 수 있습니다. 결과 맵의 키와 연결됩니다.
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!