Go 映射
约 224 个字 41 行代码 预计阅读时间 1 分钟
特点
将键映射到值。
形式
数据类型写法:
| map[键的数据类型]值的数据类型
// eg.
var m map[string]Vertex
|
加上值:
| map[键的数据类型]值的数据类型{
键1: 值1,
键2: 值2...
}
// eg.
type Vertex struct {
Lat, Long float64
}
var m = map[string]Vertex{
"Bell Labs": Vertex{
40.68433, -74.39967,
},
"Google": Vertex{
37.42202, -122.08408,
},
}
|
与结构体类似;
必须有键名。
可使用 make
返回给定类型的映射,并将其初始化备用:
| m = make(map[string]Vertex)
|
零值
为 nil
。没有键,也不能添加键。
通过键访问值
从映射中读取不存在的键时,返回映射元素类型的零值。
(没看懂)
若顶级类型只是一个类型名,你可以在文法的元素中省略它。
If the top-level type is just a type name, you can omit it from the elements of the literal.
修改
插入 / 修改元素
获取元素
从映射中读取不存在的键时,返回映射元素类型的零值。
删除元素
检测键是否存在
若存在,ok
为true
;否则,ok
为false
,v
为映射元素类型的零值。
若v
, ok
未声明,可以用:=
。
练习
| package main
import (
"golang.org/x/tour/wc"
"strings"
)
func WordCount(s string) map[string]int {
ws := strings.Fields(s)
wcm := make(map[string]int)
for _, v := range ws {
wcm[v] += 1
}
return wcm
}
func main() {
wc.Test(WordCount)
}
|
来源
https://tour.go-zh.org/moretypes/23