>백엔드 개발 >Golang >Golang에는 왜 기본 세트 데이터 구조가 없나요?

Golang에는 왜 기본 세트 데이터 구조가 없나요?

Patricia Arquette
Patricia Arquette원래의
2024-11-28 16:43:14961검색

Why Doesn't Golang Have a Native Set Data Structure?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.