>  기사  >  백엔드 개발  >  golang의 지도 중복 제거를 위한 여러 가지 방법

golang의 지도 중복 제거를 위한 여러 가지 방법

PHPz
PHPz원래의
2023-04-10 14:18:431479검색

Go 언어는 "인터넷 시대의 C 언어"로 알려진 강력한 형식의 정적 언어입니다. Go 언어의 표준 라이브러리에서 맵은 키-값 쌍을 저장하는 데 자주 사용되는 매우 일반적으로 사용되는 데이터 구조입니다. make 기능을 이용하여 맵을 생성할 수 있으며, 풍부한 작업 방법을 제공합니다. 그러나 맵의 요소 수가 증가하면 맵이 차지하는 메모리가 점점 커집니다. 이를 제어하지 않으면 프로그램의 메모리 사용량이 너무 높아질 수 있습니다. 이 기사에서는 프로그램 메모리를 더 잘 제어하는 ​​데 도움이 되는 golang 맵 중복 제거를 구현하는 여러 가지 방법을 소개합니다.

방법 1: 트래버스 및 카운트

지도에서 지정된 요소를 삭제하려면 내장된 삭제 기능을 사용해야 합니다. 그러나 맵의 모든 요소를 ​​중복 제거해야 하는 상황에서는 맵을 탐색하고 요소 수를 계산하여 맵 중복 제거를 수행할 수 있습니다.

구체적인 프로세스는 다음과 같습니다.

  1. map[string]int 유형의 맵을 정의합니다.
  2. 원본 맵을 탐색하고 각 요소의 발생 횟수를 계산합니다.
  3. 새 맵을 구성하고 발생 횟수 1 지도에 넣습니다.
  4. 새 지도를 반환합니다.

샘플 코드는 다음과 같습니다.

func removeDuplicate(m map[string]string) map[string]string {
    counts := make(map[string]int)
    for _, v := range m {
        counts[v] += 1
    }
    res := make(map[string]string)
    for k, v := range m {
        if counts[v] == 1 {
            res[k] = v
        }
    }
    return res
}

방법 2: 슬라이스를 보조 저장소로 사용

골랭 맵을 중복 제거하는 또 다른 방법은 슬라이스를 보조 저장소로 사용하는 것입니다. 프로세스는 다음과 같습니다.

  1. map[string]bool; 유형의 맵을 정의합니다.
  2. 원래 맵을 탐색하고 맵의 모든 키-값 쌍을 보조 맵에 ​​저장합니다.
  3. 새 슬라이스를 만들고 모두 저장합니다. 보조 맵의 키-값 쌍 키는 슬라이스에 저장됩니다.
  4. 는 새 슬라이스를 반환합니다.

샘플 코드는 다음과 같습니다.

func removeDuplicate(m map[string]string) []string {
    res := make([]string, 0, len(m))
    temp := make(map[string]bool)
    for _, v := range m {
        if _, ok := temp[v]; !ok {
            temp[v] = true
            res = append(res, v)
        }
    }
    return res
}

방법 3: 구조체를 사용하여 필터링

구조체를 사용하여 필터하는 것도 지도 중복 제거를 달성하는 방법 중 하나입니다. 구체적인 단계는 다음과 같습니다.

  1. 구조물을 정의합니다. 각 요소에는 키와 값이라는 두 가지 속성이 포함됩니다.
  2. map[string]struct 유형의 맵을 정의합니다.
  3. 원본 맵을 탐색하고 요소 값을 키로 사용합니다. , 그리고 새 지도를 구성합니다[string]struct;
  4. 새 지도를 반환합니다.

샘플 코드는 다음과 같습니다.

func removeDuplicate(m map[string]string) map[string]struct{} {
    res := make(map[string]struct{}, len(m))
    for _, v := range m {
        res[v] = struct{}{}
    }
    return res
}

요약

위는 Golang 맵 중복 제거를 구현하는 세 가지 방법, 즉 순회 및 계산, 슬라이스를 보조 저장소로 사용, 구조체를 필터링에 사용하는 것입니다. 맵을 사용할 때 과도한 메모리 사용과 프로그램 성능에 영향을 주지 않도록 요소 수를 제어하는 ​​데 주의하세요. 이 기사가 도움이 되기를 바랍니다.

위 내용은 golang의 지도 중복 제거를 위한 여러 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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