Go by Example: Maps

来自泡泡学习笔记
BrainBs讨论 | 贡献2024年3月7日 (四) 09:04的版本 (创建页面,内容为“ Maps是Go语言的内置关联数据类型(在其他语言中有时被称为哈希或字典)。 要创建一个空的map,可以使用内置的make函数:<code>make(map[key-type]val-type)</code>。 使用典型的<code>name[key] = val</code>语法设置键/值对。 使用例如fmt.Println打印一个map将显示其所有的键/值对。 使用<code>name[key]</code>获取键的值。 如果键不存在,则返回值类型的零值。 当在map上…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

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