*本文笔记参考:b站【尚硅谷】Golang入门到实战教程
map是key-value数据结构,又称为字段或关联数组。
1、map的声明
var 变量名 map[keytype]valuetype
key的数据类型通常为int、string类型,也可以为bool、数字、指针、channel,还可以是只包含前面几个类型的接口、数组、结构体;但是,不能为slice、map、function,因为这几个没法用==判断。
value的数据类型通常为数字(整数、浮点数)、string、map、struct。
声明是不会分配内存的,初始化需要make,分配内存后才能赋值和使用。
var a map[string]string
fmt.Println(a)
// 输出:map[]
func main() {
var a map[string]string
a["no1"] = "宋江"
a["no2"] = "吴用"
a["no1"] = "武松"
a["no3"] = "吴用"
fmt.Println(a)
}
// 输出:
//panic: assignment to entry in nil map
//goroutine 1 [running]:
//main.main()
// E:/study/Go_WorkSpace/src/code/test/main.go:9 +0x32
//exit status 2
func main() {
var a map[string]string
// 使用map前,需要先make,make的作用就是给map分配数据空间
a = make(map[string]string, 10)
a["no1"] = "go"
a["no2"] = "hello"
fmt.Println(a)
}
//输出:map[no1:go no2:hello]
说明:
-
map在使用前一定要make;
-
make里如果不指定map的size,则默认size为1;
-
map的key不能重复,如果重复了,则以最后的key-value为准;
-
map的value是可以重复的;
-
map的key-value是无序的。