练习:映射

程序员成长之旅 · 程序员成长之旅/Go语言学习/笔记 · 385 字

练习:映射

实现 WordCount 。它应当返回一个映射,其中包含字符串 s 中每个“单词”的个数。函数 wc.Test 会对此函数执行一系列测试用例,并输出成功还是失败。

你会发现 strings.Fields 很有帮助。 package main import ( "golang.org/x/tour/wc" "strings" ) func WordCount(s string) map[string]int { m:=make(map[string]int) c:=strings.Fields(s) for _,v:= range c{ m[v]+=1 } return m } func main() { wc.Test(WordCount) } //返回 PASS f("I am learning Go!") = map[string]int{"Go!":1, "I":1, "am":1, "learning":1} PASS f("The quick brown fox jumped over the lazy dog.") = map[string]int{"The":1, "brown":1, "dog.":1, "fox":1, "jumped":1, "lazy":1, "over":1, "quick":1, "the":1} PASS f("I ate a donut. Then I ate another donut.") = map[string]int{"I":2, "Then":1, "a":1, "another":1, "ate":2, "donut.":2} PASS f("A man a plan a canal panama.") = map[string]int{"A":1, "a":2, "canal":1, "man":1, "panama.":1, "plan":1}

x

1 package

main 2 3 import ( 4

"golang.org/x/tour/wc" 5

"strings" 6 ) 7 8 func

WordCount ( s

string ) map [ string ] int { 9

m :

make ( map [ string ] int ) 10

c :

strings . Fields ( s ) 11

for

_ , v :

range

c { 12

m [ v ] += 1 13

} 14

return

m 15 } 16 17 func

main () { 18

wc . Test ( WordCount ) 19 } 20 //返回 21 PASS 22

f ( "I am learning Go!" )

23

map [ string ] int { "Go!" : 1 , "I" : 1 , "am" : 1 , "learning" : 1 } 24 PASS 25

f ( "The quick brown fox jumped over the lazy dog." )

26

map [ string ] int { "The" : 1 , "brown" : 1 , "dog." : 1 , "fox" : 1 , "jumped" : 1 , "lazy" : 1 , "over" : 1 , "quick" : 1 , "the" : 1 } 27 PASS 28

f ( "I ate a donut. Then I ate another donut." )

29

map [ string ] int { "I" : 2 , "Then" : 1 , "a" : 1 , "another" : 1 , "ate" : 2 , "donut." : 2 } 30 PASS 31

f ( "A man a plan a canal panama." )

32

map [ string ] int { "A" : 1 , "a" : 2 , "canal" : 1 , "man" : 1 , "panama." : 1 , "plan" : 1 } 33