#《Go 语音圣经(中文版)》

#入门

#查找重复的行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main

import (
"bufio"
"fmt"
"os"
)

func main() {
counts := make(map[string]int)
input := bufio.NewScanner(os.Stdin)
for input.Scan() {
counts[input.Text()]++
}
for line, n := range counts {
if n > 1 {
fmt.Printf("%d\t%s\n", n, line)
}
}
}

if语句条件两边也不加括号,但是主体部分需要加。

map存储了键/值key/value)的集合,对集合元素,提供常数时间的存、取或测试操作。

可以是任意类型,只要其值能用==运算符比较。则可以是任意类型。

map中不含某个键时会自动创建键并赋值零值

map迭代顺序并不确定,从实践来看,该顺序随机,每次运行都会变化。[1]

bufio包的Scanner类型读取输入并将其拆成行或单词。

每次调用input.Scan(),即读入下一行,并移除行末的换行符。

Scan函数在读到一行时返回true,不再有输入时返回false


  1. Google Go Lang Assignment Order ↩︎