mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 00:11:36 +08:00
修改部分描述,添加必要的标点符号,补充代码超链接 (#804)
This commit is contained in:
@@ -23,7 +23,7 @@ map 传递给函数的代价很小:在 32 位机器上占 4 个字节,64 位
|
||||
|
||||
map 也可以用函数作为自己的值,这样就可以用来做分支结构(详见第 5 章):key 用来选择要执行的函数。
|
||||
|
||||
如果 key1 是 map1 的key,那么 `map1[key1]` 就是对应 key1 的值,就如同数组索引符号一样(数组可以视为一种简单形式的 map,key 是从 0 开始的整数)。
|
||||
如果 key1 是 map1 的 key,那么 `map1[key1]` 就是对应 key1 的值,就如同数组索引符号一样(数组可以视为一种简单形式的 map,key 是从 0 开始的整数)。
|
||||
|
||||
key1 对应的值可以通过赋值符号来设置为 val1:`map1[key1] = val1`。
|
||||
|
||||
@@ -80,7 +80,7 @@ mapAssigned 也是 mapLit 的引用,对 mapAssigned 的修改也会影响到 m
|
||||
|
||||
**不要使用 new,永远用 make 来构造 map**
|
||||
|
||||
**注意** 如果你错误的使用 new() 分配了一个引用对象,你会获得一个空引用的指针,相当于声明了一个未初始化的变量并且取了它的地址:
|
||||
**注意** 如果你错误地使用 new() 分配了一个引用对象,你会获得一个空引用的指针,相当于声明了一个未初始化的变量并且取了它的地址:
|
||||
|
||||
```go
|
||||
mapCreated := new(map[string]float32)
|
||||
@@ -130,7 +130,7 @@ noteFrequency := map[string]float32 {
|
||||
|
||||
## 8.1.3 用切片作为 map 的值
|
||||
|
||||
既然一个 key 只能对应一个 value,而 value 又是一个原始类型,那么如果一个 key 要对应多个值怎么办?例如,当我们要处理unix机器上的所有进程,以父进程(pid 为整型)作为 key,所有的子进程(以所有子进程的 pid 组成的切片)作为 value。通过将 value 定义为 `[]int` 类型或者其他类型的切片,就可以优雅的解决这个问题。
|
||||
既然一个 key 只能对应一个 value,而 value 又是一个原始类型,那么如果一个 key 要对应多个值怎么办?例如,当我们要处理unix机器上的所有进程,以父进程(pid 为整型)作为 key,所有的子进程(以所有子进程的 pid 组成的切片)作为 value。通过将 value 定义为 `[]int` 类型或者其他类型的切片,就可以优雅地解决这个问题。
|
||||
|
||||
这里有一些定义这种 map 的例子:
|
||||
|
||||
|
Reference in New Issue
Block a user