map是go语言内置类型,如果有编程基础的人,相信可以很快理解map究竟是什么,它将value与key关联起来,可以用key检索。
Map是一种无序键值对的集合,key类似索引,指向数据的value。
Map基于hash实现,所以这也是它无序的原因。
Map是引用类型。
使用Map需要注意以下几点:
先声明再make
var m map[string]string
m = make(map[string]string,10)
声明的同时make
var m = make(map[string]string,10)
声明并直接赋值
var m map[string]string = map[string]string{"id": "01"}
来看一段代码:
var m map[string]string //定义一个map
m = make(map[string]string)
m2 := make(map[string]string)//简短写法
m["a"] = "apple" //放入key和value
m["b"] = "banana"
value, ok := m["a"] //ok是看当前key是否存在返回布尔,value返回对应key的值
if ok {
fmt.Printf("exist key, value is %s \n", value)
} else {
fmt.Println("not exist")
}
value2, ok := m2["a"]
if ok {
fmt.Printf("exist key, value is %s \n", value2)
} else {
fmt.Println("not exist")
}
结果如下:
exist key, value is apple not exist
not exist
var m map[string]string
m = make(map[string]string)
m["a"] = "apple"
m["b"] = "banana"
for key,value := range dict{ //取map中的值
fmt.Println(key,"**********",value)
}
运行结果:
b =====> banana
a =====> apple
var m map[string]string
m = make(map[string]string)
m["a"] = "apple"
m["b"] = "banana"
delete(m, "a") // 删除m里的key:a
for key,value := range dict{ //取map中的值
fmt.Println(key,"**********",value)
}
运行结果:
b =====> banana
定义三个map,然后装进一个切片中,遍历切片。
m1 := map[string]string{
"name": "zhangsan",
"id": "01"}
m2 := map[string]string{
"name": "lisi",
"id": "02"}
m3 := map[string]string{
"name": "wangwu",
"id": "03"}
slice := make([]map[string]string, 0, 3)
slice = append(slice, m1)
slice = append(slice, m2)
slice = append(slice, m3)
for _, val := range slice {
fmt.Printf("name : %s, id : %s \n", val["name"], val["id"])
}
运行结果:
name : zhangsan, id : 01
name : lisi, id : 02
name : wangwu, id : 03
如果现在有一个map 叫m3, 然后我们再定义一个map m4, 我们让m4 = m3, 如果我们改掉m3里key的value的话,那m4会保持不变还是跟着m3一样改变里面的value呢?
很明显,会跟着m3一样改变。
m3 := map[string]string{
"name": "wangwu",
"id": "03"}
m4 := m3
fmt.Println(m4) //第一次打印里面的内容
m3["name"] = "zhaoliu"
fmt.Println(m4) //第二次打印里面的内容
结果如下:
map[id:03 name:wangwu]
map[id:03 name:zhaoliu]
map容量达到最大后, 再增加元素会自动扩容, 也就是说map会动态增长。
原文:https://www.cnblogs.com/changfangxing/p/12423108.html