本文摘自php中文网,作者(*-*)浩,侵删。

map
类似其它语言中的哈希表或字典,以key-value形式存储数据 (推荐学习:go)
key必须是支持==或!=比较运算的类型,不可以是函数、map或slice
Map通过key查找value比线性搜索快很多
Map使用make()创建,支持:=这种简写方式
make([keyType]valueType,cap),cap表示容量,可省略
超出容量时会自动扩容,但尽量提供一个合理的初始值
使用len()获取元素个数
键值对不存在时自动添加,使用delete()删除某键值对
使用for range对map和slice进行迭代
map的声明与默认值
1 2 3 4 5 6 7 8 9 10 11 12 | // 声明
var m map[string]string
// bool 的零值是false
var m map[int]bool
a, ok := m[1]
fmt.Println(a, ok) // false false
// int 的零值是0
var m map[int]int
a, ok := m[1]
fmt.Println(a, ok) // 0 false
|
map的声明的时候默认值是nil ,此时进行取值,返回的是对应类型的零值(不存在也是返回零值)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | // 先声明map
var m1 map[string]string
// 再使用make函数创建一个非nil的map,nil map不能赋值
m1 = make(map[string]string)
// 最后给已声明的map赋值
m1["a"] = "aa"
m1["b"] = "bb"
// 直接创建
m2 := make(map[string]string)
// 然后赋值
m2["a"] = "aa"
m2["b"] = "bb"
// 初始化 + 赋值一体化
m3 := map[string]string{
"a": "aa",
"b": "bb",
}
// ==========================================
// 查找键值是否存在
if v, ok := m1["a"]; ok {
fmt.Println(v)
} else {
fmt.Println("Key Not Found")
}
// 遍历map
for k, v := range m1 {
fmt.Println(k, v)
}
m := make(map[interface{} ]interface{})
m[1] = 56
m["str"] = "dfsdf"
fmt.Println(m)
|
map数据类型初始化:
阅读剩余部分
相关阅读 >>
golang 类似php中 http_build_query 方法
手撸golang etcd raft协议之6
你知道go程序的基本要素吗
[go] go语言实战-为博客园增加gofly在线客服功能
go的自动重载工具如何安装
手撸golang 基本数据结构与算法 堆排序
go 读写锁实现原理解读
golang如何设置时间
go语言标准库之log
go语言学习4-数组类型
更多相关阅读请进入《golang》频道 >>
老貘
一个与时俱进的Go编程知识库。
转载请注明出处:木庄网络博客 » golang map需要make吗