Go by Example: Maps
跳到导航
跳到搜索
Maps是Go语言的内置关联数据类型(在其他语言中有时被称为哈希或字典)。
要创建一个空的map,可以使用内置的make函数:make(map[key-type]val-type)
。
使用典型的name[key] = val
语法设置键/值对。
使用例如fmt.Println打印一个map将显示其所有的键/值对。
使用name[key]
获取键的值。
如果键不存在,则返回值类型的零值。
当在map上调用时,内置的len返回键/值对的数量。
内置的delete从map中删除键/值对。
要从map中删除所有键/值对,请使用clear内置函数。
从map中获取值时的第二个可选返回值指示键是否在map中。这可以用于消除缺失键和具有零值的键之间的歧义,如0或”“。在这里,我们不需要值本身,所以我们用空白标识符_忽略了它。
您还可以使用此语法在同一行声明和初始化一个新的map。
maps包包含一些有用的map实用程序函数。
请注意,当使用fmt.Println打印时,maps以map[k:v k:v]的形式出现。
package main
import (
"fmt"
"maps"
)
func main() {
m := make(map[string]int)
m["k1"] = 7
m["k2"] = 13
fmt.Println("map:", m)
v1 := m["k1"]
fmt.Println("v1:", v1)
v3 := m["k3"]
fmt.Println("v3:", v3)
fmt.Println("len:", len(m))
delete(m, "k2")
fmt.Println("map:", m)
clear(m)
fmt.Println("map:", m)
_, prs := m["k2"]
fmt.Println("prs:", prs)
n := map[string]int{"foo": 1, "bar": 2}
fmt.Println("map:", n)
n2 := map[string]int{"foo": 1, "bar": 2}
if maps.Equal(n, n2) {
fmt.Println("n == n2")
}
}
$ go run maps.go
map: map[k1:7 k2:13]
v1: 7
v3: 0
len: 2
map: map[k1:7]
map: map[]
prs: false
map: map[bar:2 foo:1]
n == n2