A Tour of Go : Exercise: Maps
A Tour of Go系列。如有问题欢迎指出~
Tour第二篇,直接贴代码吧,同样很简单。
1 package main 2 3 import ( 4 "code.google.com/p/go-tour/wc" 5 "strings" 6 ) 7 8 func WordCount(s string) map[string]int { 9 cntWord:=make(map[string]int) 10 for _,v:=range strings.Fields(s){ 11 cntWord[v]+=1 12 } 13 return cntWord 14 } 15 16 func main() { 17 wc.Test(WordCount) 18 }
Run一下将输出:
PASS f("I am learning Go!") = map[string]int{"I":1, "learning":1, "Go!":1, "am":1} PASS f("The quick brown fox jumped over the lazy dog.") = map[string]int{"over":1, "lazy":1, "quick":1, "brown":1, "the":1, "dog.":1, "fox":1, "jumped":1, "The":1} PASS f("I ate a donut. Then I ate another donut.") = map[string]int{"donut.":2, "another":1, "ate":2, "Then":1, "I":2, "a":1} PASS f("A man a plan a canal panama.") = map[string]int{"plan":1, "man":1, "A":1, "panama.":1, "a":2, "canal":1}
注意:
- 初始化map应用make这个built-in的函数,其返回生成map的引用。map中的值被自动初始化为0(值为int类型是时,其他类型类似)
- 第10行的for _,v:=...中的"_"类似于Lua中的哑元,函数返回时该位置的值将被略过。
- strings.Fields函数将一个string根据其中的空白字符将其分成一个[]string数组,类似于split