여러 맵에서 키 존재 확인
여러 맵으로 작업할 때 모든 맵에 특정 키가 있는지 확인해야 하는 경우가 많습니다. 그들을. 다음 접근 방식이 일반적이지만
if v1, ok1 := map1["aaa"]; ok1 { ... } if v2, ok2 := map2["aaa"]; ok2 { ... }
여러 if 문이 포함됩니다. 하나의 조건에서 이 검사를 수행하는 더 간결한 방법이 있습니까?
Condensing Syntax 시도
한 가지 가능한 해결책은 두 맵에서 키 존재를 평가한 다음 교차점을 확인하세요.
v1, ok1 := map1["aaa"] v2, ok2 := map2["aaa"] if ok1 && ok2 { ... }
그러나 이 접근 방식에서는 두 개의 별도 할당 및 체크인이 필요합니다. steps.
단일 조건 키 검사의 한계
나중에 Go 언어는 단일 if 조건에서 여러 키 존재를 검사하는 것을 허용하지 않습니다. Go 사양에 따르면 지도의 인덱스 표현식은 키의 존재 여부를 나타내는 추가 부울 값을 생성합니다. 이 특수 구문은 할당이나 초기화에만 사용할 수 있습니다.
따라서 특수 v, ok := m[k] 형식만으로는 결합 키 존재 확인을 수행할 수 없습니다.
키 존재 확인의 대안
맵의 값 유형이 인터페이스 유형이고 보장 가능한 경우 nil 값을 가지지 않기 위한 대체 접근 방식은 튜플 할당을 사용하여 키 존재를 확인하는 것입니다.
if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil { ... }
더 복잡한 경우에는 도우미 함수를 만들어 키 존재 확인 논리를 캡슐화할 수 있습니다.
func idx(m1, m2 map[string]interface{}, k string) ( v1, v2 interface{}, ok1, ok2 bool) { v1, ok1 = m1[k] v2, ok2 = m2[k] return } // Usage example: if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); ok1 && ok2 { ... }
위 내용은 단일 조건으로 여러 Go 맵에 걸쳐 키 존재를 효율적으로 확인하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!