我正在这里https://tour.golang.org/moretypes/23处执行Go教程,并对练习进行了一些修改以尝试更深入地研究。
package main
import (
"fmt"
"strings"
)
func WordCount(s string) map[string]int {
m := make(map[string]int)
x := strings.Fields(s)
for _, e := range x {
m[e]++
}
return m
}
func main() {
phrase := "The quick brown fox"
fmt.Println(WordCount(phrase), "length:", len(WordCount(phrase)))
}
对我来说,没有什么意义是++运算符在向地图添加新元素时在这种情况下的工作方式。
++运算符的定义:增量运算符。它将整数值增加一。
在这种情况下,++运算符会增加地图的LENGTH的整数值,然后将e元素添加到新的地图长度中吗?
答案 0 :(得分:4)
int
中map
个值的默认值为0
。因此,当您遍历x
并调用m[e]++
时,扩展版本将为
m[e] = m[e] + 1
换句话说:
m[e] = 0 + 1
当然,如果一个字段重复,它将已经在地图中(某些值> 0)。
在循环后检查地图的长度时,它会给出字符串中唯一字段的数量。