Maps {.en}
关联数组 {.zh}
::: {.en} Maps are Go’s built-in associative data type (sometimes called hashes or dicts in other languages). :::
::: {.zh}
Maps 是 Go 的内建 关联数据类型(有时在其他语言中称为 哈希(hashes)或 字典(dicts))。
:::
package mainimport "fmt"func main() {
::: {.en}
To create an empty map, use the builtin make:
make(map[key-type]val-type).
:::
::: {.zh}
要创建一个空 map,请使用内建的 make:make(map[key-type]val-type)。
:::
m := make(map[string]int)
::: {.en}
Set key/value pairs using typical name[key] = val
syntax.
:::
::: {.zh}
使用典型的 name[key] = val 语法 设置键/值对。
:::
m["k1"] = 7m["k2"] = 13
::: {.en}
Printing a map with e.g. fmt.Println will show all of
its key/value pairs.
:::
::: {.zh}
使用 fmt.Println 打印 map 的所有所有键/值对。
:::
fmt.Println("map:", m)
::: {.en}
Get a value for a key with name[key].
:::
::: {.zh}
使用 name[key] 获取一个键的值。
:::
v1 := m["k1"]fmt.Println("v1: ", v1)
::: {.en}
The builtin len returns the number of key/value
pairs when called on a map.
:::
::: {.zh}
map 调用内建的 len 时返回 键/值对 的数量。
:::
fmt.Println("len:", len(m))
::: {.en}
The builtin delete removes key/value pairs from
a map.
:::
::: {.zh}
内建的 delete 方法从 map 中删除键/值对。
:::
delete(m, "k2")fmt.Println("map:", m)
::: {.en}
The optional second return value when getting a
value from a map indicates if the key was present
in the map. This can be used to disambiguate
between missing keys and keys with zero values
like 0 or "". Here we didn’t need the value
itself, so we ignored it with the blank identifier
_.
:::
::: {.zh}
从 map 获取一个值时,可选第二个返回值表示该键是否存在于这个 map 中。这可用于消除缺失键和键值为 0 值或空值( 0 或者 "")之间的歧义。这里我们不需要值,所以我们用 blank identifier (空白标识符)_ 忽略了它。
:::
_, prs := m["k2"]fmt.Println("prs:", prs)
::: {.en} You can also declare and initialize a new map in the same line with this syntax. :::
::: {.zh}
你也可以使用此语法在同一行中声明和初始化一个新的 map。
:::
n := map[string]int{"foo": 1, "bar": 2}fmt.Println("map:", n)}
::: {.en}
Note that maps appear in the form map[k:v k:v] when
printed with fmt.Println.
:::
::: {.zh}
请注意,当使用 fmt.Println 打印时,map 以map [k:v k:v]的格式输出。
:::
$ go run maps.gomap: map[k1:7 k2:13]v1: 7len: 2map: map[k1:7]prs: falsemap: map[bar:2 foo:1]
