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

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

Linda Hamilton
Linda Hamilton원래의
2024-12-11 04:54:08318검색

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

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