Exercise: Maps (单词统计)

A Tour of Go

Exercise: Maps

https://tour.golang.org/moretypes/23

WordCount (单词统计) 是一个很经典的小程序了,在很多编程入门教程中都会出现。

这道题比较简单,但也有一些知识点值得一提。

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

 

posted @ 2017-02-02 23:07  AHUI-2017  阅读(593)  评论(0编辑  收藏  举报