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 개발자에게는 맵을 세트로 사용하는 방법을 이해하는 것이 문제 해결과 효율적인 리소스 활용에 매우 중요합니다.
위 내용은 Golang에는 왜 기본 세트 데이터 구조가 없나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!