Exercise: Maps (单词统计)
A Tour of Go
Exercise: Maps
https://tour.golang.org/moretypes/23
WordCount (单词统计) 是一个很经典的小程序了,在很多编程入门教程中都会出现。
这道题比较简单,但也有一些知识点值得一提。
上面这个答案我是参考了网上别人写的。但在参考别人之前我也自己解题了,其中,唯一不同之处是这一句:
m[word]++
我本来写的是:
_, ok := m[word] if ok { m[word]++ } else { m[word] = 1 }
这是因为我之前学过别的动态类型编程语言,如果读取一个不存在的 key, 很可能返回 nil, 因此不能直接进行计算。
但是 golang 是静态类型语言,事先已经定义了 map 里的元素类型是 int, 因此读取一个不存在的 key 返回 0, 可以直接计算。
(如果事先定义了元素类型为 bool, 则默认返回 false, 如果是 string 则返回空字符串 "")
【我第一次感受到静态语言类型的好处!】
另外,这道题提供了一个测试函数 wc.Test, 这个函数也很简单,值得看一看,有助于初步学习测试程序的写法。
https://github.com/golang/tour/blob/master/wc/wc.go