- Published on
golang中的input.scan()的关闭
- Authors
- Name
- Lif
在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
}
}
···
这样在空行就可以停止循环