여러 맵에서 효율적인 키 존재 확인
Go에서는 키 검색을 위한 효율적인 데이터 구조인 맵을 사용하여 작업하는 것이 일반적입니다. -값 쌍. 그러나 개발자가 제공한 코드는 두 개의 개별 맵에 키가 있는지 확인해야 함을 보여줍니다. 이 프로세스를 더 간결하게 만들 수 있는지 여부는 여전히 의문입니다.
답변에서 설명했듯이 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 }
이 함수는 다음과 같이 사용할 수 있습니다:
if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); ok1 && ok2 { // ... }
이러한 접근 방식을 사용하면 단일 조건문 내에서 여러 맵의 키 존재를 간결하고 효율적으로 확인할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3