Go 示例: 映射

映射是 Go 的内置 关联数据类型(在其他语言中有时称为哈希字典)。

package main
import (
    "fmt"
    "maps"
)
func main() {

要创建空映射,请使用内置的 makemake(map[键类型]值类型)

    m := make(map[string]int)

使用典型的 name[键] = 值 语法设置键值对。

    m["k1"] = 7
    m["k2"] = 13

使用例如 fmt.Println 打印映射将显示其所有键值对。

    fmt.Println("map:", m)

使用 name[键] 获取键的值。

    v1 := m["k1"]
    fmt.Println("v1:", v1)

如果键不存在,则返回值类型的 零值

    v3 := m["k3"]
    fmt.Println("v3:", v3)

内置的 len 在映射上调用时返回键值对的数量。

    fmt.Println("len:", len(m))

内置的 delete 从映射中删除键值对。

    delete(m, "k2")
    fmt.Println("map:", m)

要从映射中删除所有键值对,请使用 clear 内置函数。

    clear(m)
    fmt.Println("map:", m)

从映射中获取值时的可选第二个返回值指示键是否在映射中存在。这可以用来区分缺失的键和具有零值的键,例如 0""。这里我们不需要值本身,所以我们使用空白标识符 _ 忽略了它。

    _, prs := m["k2"]
    fmt.Println("prs:", prs)

您也可以使用此语法在同一行中声明和初始化新的映射。

    n := map[string]int{"foo": 1, "bar": 2}
    fmt.Println("map:", n)

maps 包含许多用于映射的有用实用程序函数。

    n2 := map[string]int{"foo": 1, "bar": 2}
    if maps.Equal(n, n2) {
        fmt.Println("n == n2")
    }
}

请注意,映射以 map[k:v k:v] 的形式出现,当使用 fmt.Println 打印时。

$ 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

下一个示例:范围