map是一种常用的数据存储结构,也叫HashMap, 散列表,字典等。通过键,可以快速的访问所存储的值。
在数组那节中,我们知道可以通过数组的索引快速的访问到存储的值,如下图
那么我们在数组的索引和一个值之间建立起一一对应的关系,就可以使用该值,替代数组的下标,从而快速进行值的存取。
如图所示,我们有8个学生,想通过学号,知道学生姓名,那么就可以基于数组实现这样的一种数据结构。将学号做取模运算,得到数组的索引,然后,就转化为对数组的操作 学习完了,整个go的基础课程,你就可以很随意的实现这个。在进一步扩展,目前的结构存在诸多的缺陷
以上就是map的实现的内部数据结构
var dic map[string]interface{}
map的初始化有make和字面量两种方式
var dic map[string]interface{}
// 方法1
dic = make(map[string]interface{})
// 方法2
dic = map[string]interface{}{}
使用for range可以对map的值进行遍历
for key, val := range dic {
// key, val
}
if _, ok := dic[key]; ok {
return true
}
return false
go语言中,函数传值是参数的副本,map是引用类型,在函数体中对map的修改,在原函数中同样会被修改,但是如果在调用函数体中,对map再做初始化,则不会修改原值。