在go程序设计语言中有这样一段代码
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
counts := make(map[string]int)
input := bufio.NewScanner(os.Stdin)
for input.Scan() {
counts[input.Text()]++
}
}
fmt.Scan()
fmt.Println(counts)
for line, n := range counts {
if n > 1 {
fmt.Printf("%d\t%s\n", n, line)
}
}
}
启动后不会停止。打开源码可以看到注释
只有遇到EOF
和错误的时候才会停止。
所以需要我们手动引发EOF
在windows下可以使用ctrl + z
,在linux下可以使用ctrl + d
,原因是这样的
或者在代码中添加条件跳出循环
···
for input.Scan() {
counts[input.Text()]++
if input.Text() == "" {
break
}
}
···
这样在空行就可以停止循环