在线文档  >   Golang练习   >   Map(映射/字典)

Maps[映射/字典] 是 Go 内置的关联数据类型(在其他语言中有时称为 hash[哈希]dict[字典]

package main

import "fmt"

func main() {

    // 要创建一个空的字典,请使用内置的 `make`:
    // `make(map[key-type]val-type)`.
    m := make(map[string]int)

    // 使用典型的 `name[key] = val` 语法设置键/值对。
    m["k1"] = 7
    m["k2"] = 13

    // 使用例如 `fmt.Println` 打印一个字典将显示其所有的键 / 值对。
    fmt.Println("map:", m)

    // 通过 `name[key]` 获取键的值。
    v1 := m["k1"]
    fmt.Println("v1:", v1)

    // 如果键不存在,则返回值类型的[零值](https://go.dev/ref/spec#The_zero_value)。
    v3 := m["k3"]
    fmt.Println("v3:", v3)

    // 当调用内置函数 `len` 时,会返回字典中键/值对的数量。
    fmt.Println("len:", len(m))

    // 内置函数 `delete` 可以从字典中删除键/值对。
    delete(m, "k2")
    fmt.Println("map:", m)

    // 从字典获取值时的可选第二个返回值表示键是否存在于字典中。
   // 这可以用于区分缺失的键和具有零值(如 `0` 或 `""`)的键。
   // 在这里,我们不需要值本身,因此使用 空标识符 `_` 忽略了它。
    // `_`.
    _, prs := m["k2"]
    fmt.Println("prs:", prs)

    // 您还可以使用以下语法在同一行中声明和初始化新的字典。
    n := map[string]int{"foo": 1, "bar": 2}
    fmt.Println("map:", n)
}

运行结果如下:

$ go run maps.go 
map: map[k1:7 k2:13]
v1: 7
v3: 0
len: 2
map: map[k1:7]
prs: false
map: map[bar:2 foo:1]

注意,使用 fmt.Println 打印一个map 的时候, 是以 map[k:v k:v] 的格式输出的。