1. go语言map基本介绍
map是key-value数据结构,又称为字段或关联数组
2. map的声名
2.1 基本语法
var map变量名 map[类型]value类型
- key的类型:bool,数字,string,指针,channel,也可以是包含之前几种类型的数组,接口,数组
通常key的值为int,string
slice,map和function不可以,官方解释是没有办法用"=="来判断 - value的类型:和key类型基本一致
通常是数值型,map,struct,string
2.2 map声明举例
var a map [int]string
var a map[int]map[string]string
注:map的声明不会分配内存,初始化需要Make,分配内存后才能赋值使用
package main
import "fmt"
func main(){
var a map[string]string
a = make(map[string]string,10)
a["no1"]="王"
a["no2"]="张"
a["no3"]="李"
a["no4"]="赵"
a["no5"]="吴"
fmt.Println(a)
}
说明
- map在使用前一定要make
- map的key不能重复,如果重复了,以最后的key-为准
- map的value可以是相同的
- key-value是无序的
2.3 map 的使用
map的value是map的案例
package main
import "fmt"
func main(){
var a map[string]string
a = make(map[string]string,10)
a["no1"]="王"
a["no2"]="张"
a["no3"]="李"
a["no4"]="赵"
a["no5"]="吴"
fmt.Println(a)
//存放学生的信息,每个学生都有name和sex
studentMap := make(map[string]map[string]string)
studentMap["no1"] = make(map[string]string,2)
studentMap["no1"]["name"] = "张"
studentMap["no1"]["sex"] = "男"
studentMap["no2"] = make(map[string]string,2)
studentMap["no2"]["name"] = "王"
studentMap["no2"]["sex"] = "男"
fmt.Println(studentMap)
}
2.4 map的增删改查
-
map的增加和更新
map[key] = value //如果key存在,则为更新,若没有则为添加 -
map的删除
delete(map,“key”),是一个内置函数,如果key存在则删除,不存在则不操作也不会报错 -
map查找
cities := make(map[string]string)
cities["no1"]="北京"
cities["no22"]="上海"
val, ok := cities["no2"]
if ok{
fmt.Print("查到了no2 V\n",val)
}else{
fmt.Print("没查到")
}