++ оператор для цикла ключей карты в го - PullRequest
0 голосов
/ 16 января 2019

Я следую уроку Go здесь https://tour.golang.org/moretypes/23 и немного изменил упражнение, чтобы попытаться копать глубже.

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)))
}

Что для меня не имеет смысла, так это то, какОператор ++ работает в этом контексте при добавлении новых элементов на карту.

Определение оператора ++: оператор приращения.Он увеличивает целочисленное значение на единицу.

В этом контексте оператор ++ увеличивает целочисленное значение ДЛИНЫ карты, а затем добавляет элемент e к новой длине карты?

1 Ответ

0 голосов
/ 16 января 2019

Значение по умолчанию int значений в map равно 0. Поэтому, когда вы выполняете итерацию по x и вызываете m[e]++, расширенная версия будет

m[e] = m[e] + 1

Другими словами:

m[e] = 0 + 1

Конечно, если поле повторяется, оно уже будет на карте (с некоторым значением> 0).

Когда вы проверяете длину карты после цикла, она дает количество уникальных полей в строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...