1.map的声明
第一种
func main (){
//第一种声明方式 map1是一个mapleixing key是string 类型 value 是 int 类型
var map1 map[string]int
//但是在这个时候map是空的
if(map1 == nil){
fmt.Println("map1为空")
}
}
这种声明方式声明出来的map对象是没有空间的
如果这个时候插入一条数据的话就会报错
所以需要用make函数开辟空间
func main (){
//第一种声明方式 map1是一个mapleixing key是string 类型 value 是 int 类型
var map1 map[string]int
//但是在这个时候map是空的
if(map1 == nil){
fmt.Println("map1为空")
}
map1 = make(map[string]int,3)
map1["aaa"] = 1
fmt.Println(map1)
}
第二种
//第二种声明方式
map2 := make(map[int]string)
map2[1] = "chinese"
map2[2] = "jiaopan"
map2[3] = "emairuike"
map2[4] = "ruaiss"
fmt.Println(map2)
这种声明方式在声明map的时候就开辟了空间,如果不指定开辟大小
系统会默认给一些然后插入元素后追加
这里可以发现插入后打印出来的数据是无序的,是因为map存储数据本身是散列存储
第三种
//第三种方式
map3 := map[string]string{
"one":"one",
"two":"two",
"three":"three",
}
fmt.Println(map3)
注意有逗号
map的使用方法
func printMap(Map map[string]string) {
for key, value := range Map {
fmt.Printf("key = %s value = %s \n",key,value)
}
}
func copyMap(Map map[string]string) map[string]string{
newmap := make(map[string]string)
for key, value := range Map {
newmap[key] = value
}
return newmap
}
func main (){
Map := make(map[string]string)
//插入
Map["int"] = "Integer"
Map["char"] = "Character"
//遍历
for key, value := range Map {
fmt.Printf("key = %s value = %s \n",key,value)
}
//删除
delete(Map,"int")
//修改
Map["int"] = "那还能是啥"
fmt.Println("---------------")
//函数传参,这个是引用传值,在函数中对map修改原map也会修改
printMap(Map)
//map的复制
newmap := make(map[string]string)
newmap = copyMap(Map)
fmt.Println(newmap)
}