转到映射键循环的++运算符

时间:2019-01-16 19:36:19

标签: go

我正在这里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元素添加到新的地图长度中吗?

1 个答案:

答案 0 :(得分:4)

intmap个值的默认值为0。因此,当您遍历x并调用m[e]++时,扩展版本将为

m[e] = m[e] + 1

换句话说:

m[e] = 0 + 1

当然,如果一个字段重复,它将已经在地图中(某些值> 0)。

在循环后检查地图的长度时,它会给出字符串中唯一字段的数量。