map
是go语句内建的关联数据类型(在其他编程语言也叫hash
或者dicts
)
例子
package main
import "fmt"
func main() {
m := make(map[string]int)
m["k1"] = 7
m["k2"] = 13
fmt.Println("map:", m)
v1 := m["k1"]
fmt.Println("v1: ", v1)
fmt.Println("len:", len(m))
delete(m, "k2")
fmt.Println("map:", m)
_, prs := m["k2"]
fmt.Println("prs:", prs)
n := map[string]int{"foo": 1, "bar": 2}
fmt.Println("map:", n)
}
代码解析
m := make(map[string]int)
可以使用内建方法make
创建map
,对应的语法为`make(map[键的类型]值的类型)
m["k1"] = 7
m["k2"] = 13
设置键值对可以使用map变量[键] = 值
fmt.Println("map:", m)
用fmt.Println
打印map
会把所有的键值对都打印
v1 := m["k1"]
fmt.Println("v1: ", v1)
获取一个键对应的值可以用map变量名[键]
fmt.Println("len:", len(m))
使用内建方法len
可以返回map
中的键值对个数
delete(m, "k2")
fmt.Println("map:", m)
使用内建方法delete
可以删除map
中的键值对
_, prs := m["k2"]
fmt.Println("prs:", prs)
用键来获取除了可以返回一个值还可以返回一个布尔值,如果值零值(像是0或者"")则返回false
其他则返回true
,这里我们只测试第二个布尔值,所以使用_
来省略返回过来的值
n := map[string]int{"foo": 1, "bar": 2}
fmt.Println("map:", n)
你也可以在定义时候直接赋值
运行结果
$ go run maps.go
map: map[k1:7 k2:13]
v1: 7
len: 2
map: map[k1:7]
prs: false
map: map[bar:2 foo:1]
注意:map
在打印时为map[k:v k:v]
的形式