> 백엔드 개발 > Golang > 여러 Go 맵에서 키 존재를 효율적으로 확인하려면 어떻게 해야 합니까?

여러 Go 맵에서 키 존재를 효율적으로 확인하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-12-17 08:04:25
원래의
663명이 탐색했습니다.

How Can I Efficiently Check for Key Existence Across Multiple Go Maps?

여러 맵에서 효율적인 키 존재 확인

Go에서는 키 검색을 위한 효율적인 데이터 구조인 맵을 사용하여 작업하는 것이 일반적입니다. -값 쌍. 그러나 개발자가 제공한 코드는 두 개의 개별 맵에 키가 있는지 확인해야 함을 보여줍니다. 이 프로세스를 더 간결하게 만들 수 있는지 여부는 여전히 의문입니다.

답변에서 설명했듯이 Go에서 키 존재 여부를 확인하기 위해 특수 v, ok := m[k] 형식을 사용하는 것은 단일 변수 할당으로 제한됩니다. . 따라서 이 양식을 사용하여 조건을 하나로 결합하는 것은 불가능합니다.

그러나 원하는 기능을 달성하기 위한 대체 접근 방식이 있습니다.

  1. 튜플 할당:
    맵의 값 유형이 인터페이스 유형이고 nil 값이 사용되지 않는 것을 확인할 수 있는 경우 다음을 수행할 수 있습니다. 두 개의 인덱스 표현식을 사용하여 튜플 할당을 수행합니다:

    if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil {
        // ...
    }
    로그인 후 복사
  2. 도우미 함수:
    두 맵에서 키 존재 확인을 수행하기 위해 도우미 함수를 생성할 수 있습니다. 그리고 결과를 반환합니다:

    func idx(m1, m2 map[string]interface{}, k string) (
        v1, v2 interface{}, ok1, ok2 bool) {
    
        v1, ok1 = m1[k]
        v2, ok2 = m2[k]
        return
    }
    로그인 후 복사

    그런 다음 이 함수를 다음과 같이 사용할 수 있습니다. 다음은 다음과 같습니다.

    if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); ok1 && ok2 {
        // ...
    }
    로그인 후 복사

이러한 접근 방식을 사용하면 단일 조건문 내에서 여러 맵의 키 존재를 간결하고 효율적으로 확인할 수 있습니다.

위 내용은 여러 Go 맵에서 키 존재를 효율적으로 확인하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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