本篇是 Go 语言之旅 (go-zh.org) 中的“循环与函数”练习的学习记录。
++++++++++++++++++++++++++++++++++++++++++++++++++++
实现 WordCount
。它应当返回一个映射,其中包含字符串 s
中每个“单词”的个数。函数 wc.Test
会对此函数执行一系列测试用例,并输出成功还是失败。
你会发现 strings.Fields 很有帮助。
++++++++++++++++++++++++++++++++++++++++++++++++++++
提示使用strings.Fields,这个函数接收一个字符串,根据其中的空字符拆分成一个字符串数组并返回:
Fields splits the string s around each instance of one or more consecutive white space characters, as defined by unicode.IsSpace, returning an array of substrings of s or an empty list if s contains only white space.
—— http://go-zh.org/pkg/strings/#Fields
package main
import (
"golang.org/x/tour/wc"
"strings"
)
func WordCount(s string) map[string]int {
fields := strings.Fields(s)
dict := make(map[string]int)
for _, v:=range fields{
if _, existed := dict[v];existed{
dict[v]++
}else{
dict[v]=1
}
}
return dict
}
func main() {
wc.Test(WordCount)
}