map的创建:
m:=map[string]int{
"java":20,
"c":20,
"cpp":20,
}
m1:=make(map[string]int)
var m3 map[string]int
打印一下:
fmt.Println(m)
fmt.Println(m1)
fmt.Println(m3)
控制台:
map[c:20 cpp:20 java:20]
map[]
map[]
Process finished with exit code 0
map的遍历:
for k,v :=range m{
fmt.Println(k,v)
}
控制台打印:
java 20
c 20
cpp 20
map是hashmap,无序的,遍历出来也是无序的。
通过key值获取value:
java:= m["java"]
获取key值为java的value值
当key值没有对应的value时,会返回一个空串,也就是 zero value。
判断Key值是否存在:
java,ok:= m["java"]
fmt.Println(java,ok)
控制台:
20 true
不存在时:
java,ok:= m["java1"]
fmt.Println(java,ok)
控制台:
0 false
if java,ok:= m["java1"];ok{
fmt.Println(java,ok)
}else {
fmt.Println("key is not exist")
}
元素删除:
fmt.Println("before delete:",m)
delete(m,"cpp")
fmt.Println("after delete:",m)
控制台:
before delete: map[c:20 cpp:20 java:20]
after delete: map[c:20 java:20]
Process finished with exit code 0
总结:
创建:make(map[string]int)
获取元素:m[key]
key不存在时,获取的vaule为Value类型的初始值
用 value,ok:=m["key"],来判断是否存在key
用delete("key")来删除一个key
map中key的要求:
map使用哈希表,key值必须可以比较相等。
除了slice,function,map都可以作为key
struct类型不包含上述不允许的字段,都可以作为Key