写点什么

[Golang 基础] Map 数据类型

用户头像
baiyutang
关注
发布于: 刚刚

译者:baiyutang

原文:https://nikhilvaidyar1997.medium.com/golang-basics-maps-79bb9a3d90a7


嗨,大家好。今天,我将会聊一聊 Go 中的 Map 概念,它用来存储数据以键值对形式。要简单介绍的是内建 Map 类型是实现了公共的数据结构 - 哈希表。

什么是哈希表

哈希表是以关联形式存储数据的数据结构。通过从每个键生成唯一值的哈希函数映射到数组位置的数据。

哈希表主要的优势是高效,一个元素的平均访问时间是 O(1),所以它提供了更快的查找、添加和删除。哈希函数生成并从 key 中寻址。这个将 key 映射到适当位置的过程叫散列。


好了,已经给哈希表数据结构有了足够的说明。回到我们的主题。Go 的 Map 数据类型意味着它映射 key 到 value,并存储数据。


Map 的实现


Map 类型像切片或指针,是引用类型。一个空的 Map 表现如同 Go 中的 nil 数据类型。而如果你只声明了一个 nil Map,它将返回一个如下的空 map:

var m map[string]int// map[]
复制代码


如果我们尝试向 nil Map 中写入,它将引起运行时 panic 错误。这是错误截屏:


你也可以去这个链接去核实:https://play.golang.org/。Golang 提供了一个运行、测试或多重操作的地方。


在这个案例中,我们已经使用 var 关键字声明了 Map,我们可以使用内建函数 make 去避免运行时 panic 错误。

var m map[string]intm = make(map[string]int)m["age"] = 24fmt.Println(m) // map[age:24]
复制代码


我们也可以这样初始化一个 Map:

m := map[string]string{"name": "John", "age": "24", "sex": "Male"}// map[age:24 name:John sex:Male]
复制代码


发布于: 刚刚阅读数: 2
用户头像

baiyutang

关注

广州 2017.12.13 加入

Microservices | Golang | Cloud Nitive | “Smart work,Not hard”

评论

发布
暂无评论
[Golang 基础] Map 数据类型