我正在尝试解决go tour #43 中的难题,但我不明白为什么我的单词计数器不起作用。“print”似乎打印了预期值,但无论计数多少,测试都只看到“1”。package mainimport ( "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)}
2 回答

www说
TA贡献1775条经验 获得超8个赞
你在解决错误的问题。它不会询问您每个单词的长度,而是询问每个单词出现的次数。改变
c[v] = utf8.RuneCountInString(v)
为了
c[v] += 1 // or c[v]++

拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
问题是c[v] = utf8.RuneCountInString(v)
。它有两个问题:
每次重新遇到它时,您都会为每个单词重置计数器。你应该增加,而不是设置。
您正在将单词中的符文数量设置为计数器。谜题是“一个单词在文本中出现多少次”。所以只需执行类似的操作
c[v] = c[v] + 1
(如果条目为空,则默认为 0)
另外,我会将文本标准化 - 去除标点符号并将所有内容小写。
- 2 回答
- 0 关注
- 182 浏览
添加回答
举报
0/150
提交
取消