# map是一种键值对存取的复合数据类型
package main
import "fmt"
func main() {
//map 无序 键值唯一
//键值一般是基本数据类型(不能是切片等数据类型、不能是函数类型)
//map 只有len() 没有cap()
//声明定义一个map变量
var m map[int]string
m1 := make(map[int]string)
m2 := make(map[int]string,5) //指定初始容量
//map的赋值与添加
m1[1] = "aaa"
m1[2] = "bbb"
m1[1] = "111"
m1[3] = "ccc"
fmt.Println(len(m)) //0
fmt.Println(m1) //map[1:111 2:bbb 3:ccc]
fmt.Println(len(m2)) //0
//map初始化
m3 := map[int]string{1:"c",2:"c++",3:"java",4:"golang"}
fmt.Println(m3) //map[2:c++ 3:java 4:golang 1:c]
//map遍历
for k,v := range m3 {
fmt.Printf("%d:%s \n",k,v)
}
//map判断key是否存在
k := 5
v,flg := m3[k]
if flg == true{
fmt.Println("key存在,value为:",v)
}else{
fmt.Println("key不存在")
}
//map的删除
k = 3
delete(m3,k) //删除key为3的键值对
fmt.Println(m3)
//map作函数参数为引用传递
test(m3)
fmt.Println(m3)
}
func test(m map[int]string){
m[100] = "fff"
}