Golang Go语言中为什么只有 hashmap?

发布于 1周前 作者 h691938207 来自 Go语言

Golang Go语言中为什么只有 hashmap?

为什么 go 中只有 hashmap ?而不像 java 一样提供 treemap 和 linkedhashmap 呢?

上网查了一下,貌似是 go 的开发团队有意为之??

11 回复

less is more?

更多关于Golang Go语言中为什么只有 hashmap?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


第三方库里面是有的

我也很困惑,之前不得已自己实现了一个 SkipList 来存储有序的数据

treemap 有的 看下 gods 这个库

因为标准库不提供?

go 的 map 就只是 map,是一个抽象数据类型( ADT )
hashmap 是具体实现,也就是,可以有其他实现,只要保证符合这个 ADT 的语义就行
go 的 map 是语言的一部分,是一种内置类型,而 java 的 TreeMap 和 LinkedHashMap 都是库实现,而不是语言的一部分
go 语言有 map 这个内置类型,而 java 没有,应该这样理解,而不是 go 只有 hashmap
要其他的 map,实现成库就行,像 java 那样。不过 go 还没有泛型,有泛型会更好写好用一些

出来的晚,轮子没造全

为什么 Python 也没有,为什么有序字典的地位这么低

我指的是 treemap 那种大小关系的全序,不是插入顺序

在Go语言中,确实没有像其他编程语言那样直接提供多种集合类型(如hashset、hashtable、tree等),而是主要依赖map(在Go中通常被称为hashmap)来实现键值对的存储和快速查找。这一设计选择背后有几个原因:

  1. 简洁性与实用性:Go语言追求简洁的语法和实用的功能。map类型已经能满足大部分集合操作的需求,包括快速的插入、删除和查找操作,这对于大多数应用场景来说已经足够。

  2. 性能优化map在Go语言中经过高度优化,提供了接近O(1)的时间复杂度,这对于高性能需求的应用非常重要。通过专注于优化这一种数据结构,Go语言能够确保它在各种场景下的稳定性和效率。

  3. 避免复杂性:提供过多的集合类型可能会增加语言的复杂性,使得学习和使用变得困难。Go语言通过限制集合类型的数量,降低了学习曲线,使得开发者能够更快地掌握和使用这门语言。

  4. 灵活性:虽然Go语言没有直接提供其他集合类型,但开发者可以通过组合使用map、切片(slice)等内置类型来实现更复杂的数据结构。这种灵活性允许开发者根据具体需求定制解决方案。

综上所述,Go语言选择只提供map作为主要的集合类型,是基于对简洁性、性能、复杂性和灵活性的综合考虑。这种设计使得Go语言在保持强大功能的同时,保持了简洁和易用的特点。

回到顶部