在线文档 > 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]
的格式输出的。