map的概念
- map 的基本介绍
- map 是 key-value 数据结构,又称为字段或者关联数组。类似其它编程语言的集合,
- 基本语法
- var map 变量名 map[keytype]valuetype
- key 可以是什么类型
- golang 中的 map,的 key 可以是很多种类型,比如 bool, 数字,string, 指针, channel , 还可以是只包含前面几个类型的 接口, 结构体, 数组
- 通常 key 为 int 、string
- 注意:
- slice, map 还有 function 不可以,因为这几个没法用 == 来判断
- valuetype 可以是什么类型
- valuetype 的类型和 key 基本一样
- 通常为: 数字(整数,浮点数),string,,map,struct
- map 声明的举例:
- var a map[string]string
- var a map[string]int
- var a map[int]string
- var a map[string]map[string]string
- 注意:声明是不会分配内存的,初始化需要 make ,分配内存后才能赋值和使用。
//map的声明和注意事项
var a map[string]string
//在使用map前,需要先make , make的作用就是给map分配数据空间
a = make(map[string]string, 10)
a["no1"] = "宋江" //ok?
a["no2"] = "吴用" //ok?
a["no1"] = "武松" //ok?
a["no3"] = "吴用" //ok?
fmt.Println(a)
- 对上面代码的说明
- map 在使用前一定要 make
- map 的 key 是不能重复,如果重复了,则以最后这个 key-value 为准
- map 的 value 是可以相同的.
- map 的 key-value 是无序
- make 内置函数数目
map的三种使用方法
--map的声明
var a map[string]string
-- 在使用map前,需要先make , make的作用就是给map分配数据空间
a = make(map[string]string, 10)
cities := make(map[string]string)
cities["no1"] = "北京"
cities["no2"] = "天津"
cities["no3"] = "上海"
fmt.Println(cities)
heroes := map[string]string{
"hero1" : "小卤蛋",
"hero2" : "瑶瑶公主",
"hero3" : "吉吉国王",
}
heroes["hero4"] = "高地虎"
fmt.Println("heroes=", heroes)
应用案例:
- 比如:我们要存放 3 个学生信息, 每个学生有 name 和 sex 信息
studentMap := make(map[string]map[string]string)
studentMap["stu01"] = make(map[string]string, 3)
studentMap["stu01"]["name"] = "tom"
studentMap["stu01"]["sex"] = "男"
studentMap["stu01"]["address"] = "北京长安街"
studentMap["stu02"] = make(map[string]string, 3) //这句话不能少!!
studentMap["stu02"]["name"] = "mary"
studentMap["stu02"]["sex"] = "女"
studentMap["stu02"]["address"] = "上海黄浦江"
fmt.Println(studentMap)
fmt.Println(studentMap["stu02"])