golang なぜセットデータ構造がないのか [closed] 質問する

golang なぜセットデータ構造がないのか [closed] 質問する

私は、セットを必要とする Go 言語の演習を解こうとしています。セット型は作成できますが、言語にセット型が付属していないのはなぜでしょうか。Go は、Guava の発祥の地である Google から来たのに、なぜ言語設計者は基本的なデータ構造のサポートを追加しなかったのでしょうか。セットのように基本的なものに対して、ユーザーに独自の実装を作成させるのはなぜでしょうか。

ベストアンサー1

理由の 1 つは、マップからセットを作成するのが簡単だからです。

s := map[int]bool{5: true, 2: true}
_, ok := s[6] // check for existence
s[8] = true // add element 
delete(s, 2) // remove element

連合

s_union := map[int]bool{}
for k, _ := range s1{
    s_union[k] = true
}
for k, _ := range s2{
    s_union[k] = true
}

交差点

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
  }
}

他のすべての集合演算を実装するのは、実際にはそれほど難しくありません。

おすすめ記事