> 백엔드 개발 > Golang > Go 슬라이스에 요소 존재를 효율적으로 확인하는 방법은 무엇입니까?

Go 슬라이스에 요소 존재를 효율적으로 확인하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-11 04:54:08
원래의
319명이 탐색했습니다.

How to Efficiently Check for Element Existence in Go Slices?

Go Slices: 누락된 포함 메서드

Go에서 슬라이스는 주어진 요소가 내부에 존재하는지 효율적으로 확인하는 메서드를 기본적으로 제공하지 않습니다. 그들을. 수동으로 검색하기 위해 각 요소를 반복해야 하는 경우 이는 번거로운 작업이 될 수 있습니다.

대체 접근 방식

사용자 정의 포함 메소드를 구현하는 것이 가능하지만 그렇지 않습니다. 보편적으로 권장됩니다. 대신 다음 대안을 고려하십시오.

  • 정렬 패키지 사용: 정렬 패키지는 정렬된 슬라이스에 대한 효율적인 포함 검사를 수행하는 데 활용할 수 있는 이진 검색 기능을 제공합니다.
  • 지도 활용: 자주 포함된 항목을 확인하는 시나리오의 경우 지도가 더 적합할 수 있습니다. 지도는 기본적으로 특정 키의 존재를 확인하기 위해 관용구 값인 ok := yourmap[key]를 지원합니다. 더욱 최적화하려면 map[string]struct{}를 생성하여 값 저장 오버헤드를 제거하세요. 빈 구조체는 Go의 맵 구현 내에서 최적화되어 세트에 적합한 선택이 됩니다.

예:

단어라는 이름의 문자열 조각을 고려해보세요.

words := []string{"apple", "banana", "cherry"}
로그인 후 복사

정렬을 이용하여 "체리"의 존재 여부를 확인하려면 package:

i := sort.SearchStrings(words, "cherry")
if i < len(words) && words[i] == "cherry" {
  fmt.Println("cherry found")
}
로그인 후 복사

맵을 사용하여 확인하려면:

existsMap := map[string]struct{}{}
for _, word := range words {
  existsMap[word] = struct{}{}
}

if _, ok := existsMap["cherry"]; ok {
  fmt.Println("cherry found")
}
로그인 후 복사

이러한 접근 방식은 전용 Slice.contains 메서드 없이 Go 슬라이스에서 포함 검사를 수행하기 위한 효율적이고 유연한 메커니즘을 제공합니다. .

위 내용은 Go 슬라이스에 요소 존재를 효율적으로 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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