为什么我在 golang tour #43 中的 word counter 不起作用?

我正在尝试解决go tour #43 中的难题,但我不明白为什么我的单词计数器不起作用。“print”似乎打印了预期值,但无论计数多少,测试都只看到“1”。


package main


import (

    "code.google.com/p/go-tour/wc"

"strings"

    "unicode/utf8"

)


func WordCount(s string) map[string]int {

    // explode the string into a slice without whitespaces

    ws :=  strings.Fields(s)

    //make a new map

    c := make(map[string]int)

    //iterate over each word

    for _, v := range ws{


    c[v] = utf8.RuneCountInString(v)



    }


    print( c["am"])


    return c

}


func main() {

    wc.Test(WordCount)

}


肥皂起泡泡
浏览 183回答 2
2回答

www说

你在解决错误的问题。它不会询问您每个单词的长度,而是询问每个单词出现的次数。改变c[v] = utf8.RuneCountInString(v)为了c[v] += 1 // or c[v]++

拉风的咖菲猫

问题是c[v] = utf8.RuneCountInString(v)。它有两个问题:每次重新遇到它时,您都会为每个单词重置计数器。你应该增加,而不是设置。您正在将单词中的符文数量设置为计数器。谜题是“一个单词在文本中出现多少次”。所以只需执行类似的操作c[v] = c[v] + 1(如果条目为空,则默认为 0)另外,我会将文本标准化 - 去除标点符号并将所有内容小写。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go