map是key-value形式
它的key只能是基本数据类型
声明
定义并创建
// 定义map
var m map[string]string
// 创建空间
m = make(map[string]string, 2) // size可以不写,默认为1
m["name"] = "张三"
m["age"] = "21"
m["addr"] = "湖南长沙"
fmt.Println(m)
简写
m2 := map[string]string{
"name": "张三",
"age": "12",
}
增加
通过map[key] = xxx
查找
通过双赋值检测某个key是否存在
v, ok := m2["name"]
if ok {
// 如果存在,ok就为true
fmt.Printf("v = %v", v)
}else{
fmt.Printf("v不存在")
}
删除
delete(map, key) // 删除单个元素
// 删除所有的key-value
// 重新make
遍历
map只有len,没有cap
len一个map,得到的就是key的个数
只有for range一种遍历方式
for key, value := range m{
fmt.Printf("key=%v,value=%v\n", key, value)
}
切片中的元素为map类型
var mapSlice = make([]map[string]string, 3)
for index, value := range mapSlice {
fmt.Printf("index:%d value:%v\n", index, value)
}
fmt.Println("初始化元素:")
// 对切片中的map元素进行初始化
mapSlice[0] = make(map[string]string)
mapSlice[0]["name"] = "小明"
mapSlice[0]["gender"] = "男"
mapSlice[0]["address"] = "长沙"
for index, value := range mapSlice {
fmt.Printf("index:%d value:%v\n", index, value)
}
map中的值为切片类型
m := make(map[string][]string)
fmt.Println(m)
val := []string{"北京", "上海"}
m["中国"] = val
fmt.Println(m)
m["中国"] = append(m["中国"], "广州", "深圳")
fmt.Println(m)