首页 > 后端开发 > Golang > 为什么 Golang 没有原生的 Set 数据结构?

为什么 Golang 没有原生的 Set 数据结构?

Patricia Arquette
发布: 2024-11-28 16:43:14
原创
946 人浏览过

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 没有原生的 Set 数据结构?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板