map
1. 介绍
map 是一种特殊的数据结构,一种键值对(key-value)的无序集合。和数组切片不同,数组切片是有序的。
//map_name map变量名, key_type键类型,value_type 键对应的值类型
var map_name = make(map[key_type]value_type)
value_type 可以是切片
- key不允许重复,不能是函数、映射或切片
- map可以动态增长,未初始化时值是 nil
map中的键和值均不限制数据类型,键和值可分别使用不同的类型
同一个map中所有键类型相同,所有值类型相同
// 如
map[string]int
map[*T]struct{
x, y float64 }
map[string]interface{
}
2. map使用
package main
import "fmt"
func main() {
//创建map
var dept = make(map[string]string)
dept["A"] = "部门1"
dept["B"] = "部门2"
dept["C"] = "部门3"
fmt.Println(dept)
}
// 结果,这里所有的键是string类型,所有的value是string类型
map[A:部门1 B:部门2 C:部门3]
注意:不能使用new创建map
如下编译时报错,得到一个空引用的指针,类似声明了一个未初始化的变量并且取了它的地址
3. 修改map中的值
如下,修改map中的值,重新赋值即可
package main
import "fmt"
func main() {
var dept = make(map[string]string)
// 赋值
dept["A"] = "部门1"
dept["B"] = "部门2"
dept["C"] = "部门3"
fmt.Println(dept)
// 修改C的值
dept["C"] = "部门CCC"
fmt.Println(dept)
}
// 结果
map[A:部门1 B:部门2 C:部门3]
map[A:部门1 B:部门2 C:部门CCC]
4. map扩容
因此它不存在固定长度或者最大限制,但是也可以选择标明 map 的初始容量 capacity
make(map[key_type]value_type, cap)
var a = make(map[int]int, 3)
5. 应用
访问
package main
import "fmt"
func main() {
var a = make(map[int]int, 3)
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
for key, value := range a {
fmt.Println("key:", key, "value:", value)
}
}
// 结果
key: 0 value: 1
key: 1 value: 2
key: 2 value: 3
key: 3 value: 4