Golang의 집합 데이터 구조에 대한 호기심 많은 부족
Golang에서 집합 데이터 구조에 대한 근본적인 필요성은 다음과 같은 수수께끼 같은 질문으로 이어졌습니다. 기본적으로 제공되지 않습니까? Google의 영향력 있는 Guava 라이브러리에서 영감을 얻은 Golang의 디자이너는 왜 그러한 기본 구조에 대한 지원을 생략하고 개발자가 자체 구현을 작성하도록 강요했습니까?
답은 지도를 사용하여 세트를 구성하는 단순성에 있습니다. 제공된 코드 조각에서 볼 수 있듯이 지도를 활용하여 세트를 만들 수 있습니다. 존재 확인, 추가, 제거, 집합 연산(합집합, 교차점) 수행 등 주요 연산을 쉽게 구현할 수 있습니다.
s := map[int]bool{5: true, 2: true} _, ok := s[6] // check for existence s[8] = true // add element delete(s, 2) // remove element // Union s_union := map[int]bool{} for k, _ := range s1{ s_union[k] = true } for k, _ := range s2{ s_union[k] = true } // Intersection s_intersection := map[int]bool{} if len(s1) > len(s2) { s1, s2 = s2, s1 // better to iterate over a shorter set } for k,_ := range s1 { if s2[k] { s_intersection[k] = true } }
이러한 맵 기반 구현은 대부분의 실제 시나리오에 충분하지만 일부에서는 기본 세트 구현이 코드 가독성을 단순화하고 향상시킬 것이라고 주장할 수 있습니다. 그럼에도 불구하고 Golang 개발자의 경우 맵을 세트로 사용하는 것을 이해하는 것은 문제 해결과 효율적인 리소스 활용에 매우 중요합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3