MAP
1)map基本介绍
key-value==(类似python字典)
2)map的声明
声明不会分配内存,make才会==
var a map[string]string
a=make(map[string]string)
a["no1"]="aaa"
a["no2"]="bbb"
a["no3"]="ccc"
fmt.Println(a)
3)map的使用
var a map[string]string
a=make(map[string]string)
a["no1"]="aaa"
a["no2"]="bbb"
a["no3"]="ccc"
fmt.Println(a)
b:=make(map[string]string,10)
b["1"]="ddd"
b["2"]="eee"
fmt.Println(b)
c:=map[string]string{
"1":"aaa",
"2":"bbb",
"3":"ccc",
}
value为map
student:=map[string]map[string]string
student["0"]=make(map[string]string,3)
student["0"]["name"]="tom"
student["0"]["sex"]="男"
student["0"]["address"]="北京"
student["1"]=make(map[string]string,3)
student["1"]["name"]="tina"
student["1"]["sex"]="女"
student["1"]["address"]="北京"
4)map 的增删改查操作
c:=map[string]string{
"1":"aaa",
"2":"bbb",
"3":"ccc",
}
c["1"]="ddd"
fmt.Println(c)
delete(c,"2")
fmt.Println(c)
c=make(map[string]string)
fmt.Println(c)
val,k:=c["3"]
if k{
fmt.Printf("找到了,值%v",val)
}else{
fmt.Printf("没找到")
}
5)map遍历
for-range
student:=make(map[string]map[string]string)
student["0"]=make(map[string]string,3)
student["0"]["name"]="tom"
student["0"]["sex"]="男"
student["0"]["address"]="北京"
student["1"]=make(map[string]string,3)
student["1"]["name"]="tina"
student["1"]["sex"]="女"
student["1"]["address"]="北京"
for k1,v1:=range student{
fmt.Println("k1=",k1)
for k2,v2:= range v1{
fmt.Printf("k2=%v2 v2=%v2\n",k2,v2)
}
}
c:=map[string]string{
"1":"aaa",
"2":"bbb",
"3":"ccc",
}
for k,v:=range c{
fmt.Printf("k=%v v=%v",k,v)
}
6)map切片
切片和map都要分配内存==
monsters:=make([]map[string]string,2)//切片,数组
if monsters[0]==nil{
monsters[0]=make(map[string]string,2)
monsters[0]["name"]="aaa"
monsters[0]["age"]="500"
}
if monsters[1]==nil{
monsters[1]=make(map[string]string,2)
monsters[1]["name"]="bbb"
monsters[1]["age"]="500"
}
newmonsters:=map[string]string{
"name":"ccc",
"age":"23",
}
monsters=append(monsters,newmonsters)
fmt.Println(monsters)
7)map排序
map1:=make(map[int]int,10)
map1[10]=100
map1[1]=20
map1[2]=34
map1[3]=23
var keys []int
for k,_:=range map1{
keys=append(keys,k)//这是把东西放到切片里的方法
}
sort.Ints(keys)
fmt.Println(keys)
for _,k:=range keys{
fmt.Printf("map1[%v]=%v\n",k,map1[k])
}
8)使用细节
- 引用类型
- map 的容量达到后,再想 map 增加元素,会自动扩容,并不会发生 panic,也就是说 map 能动态的增长 键值对(key-value)
- value 也经常使用 struct 类型
type Stu struct{
name string
age int
address string
}
student:=make(map[string]Stu,10)
stu1:=Stu{"tom",18,"上海"}
stu2:=Stu{"java",34,"北京"}
student["1"]=stu1
student["2"]=stu2
for i,v :=range student{
fmt.Printf("%v %v %v %v",i,v.name,v.age,v.address)
fmt.Println()
}
}
总结
本文仅仅简单介绍了Golang中的map,此篇是通过b站尚硅谷Golang视频的学习做的笔记。