3 回答
TA贡献1821条经验 获得超4个赞
我认为您误读了文档。默认扫描仪是 ScanLines 功能。
文档说:
ScanLines 是 Scanner 的拆分函数,它返回每行文本,去除任何尾随的行尾标记。返回的行可能为空。行尾标记是一个可选的回车符,后跟一个强制换行符。在正则表达式中,它是
\r?\n
. 即使没有换行符,也将返回最后一个非空行的输入。
这里有两个重要的点:
返回行可能为空:这意味着它返回空行。
即使没有换行符,也将返回输入的最后一行非空行:这意味着如果文件非空,则始终返回文件的最后一行。然而,这并不意味着一个空行结束了流。
扫描仪将在 EOF(文件结束)处停止。例如,键入 Ctrl-D 将发送文件结尾并停止扫描仪。
TA贡献1807条经验 获得超9个赞
键入一个空白的新行不会自动停止扫描仪。
如果它没有坏,就不要修理它——但你可以让它按照你的要求运行。这不会消除您的if块,但会像您预期的扫描仪一样运行,即在没有输入的情况下按 Enter 将停止扫描仪:
input := bufio.NewScanner(os.Stdin) //Creating a Scanner that will read the input from the console
for input.Scan() {
if input.Text() == "" {
break
}
fmt.Println(input.Text())
}
TA贡献1786条经验 获得超11个赞
CTRL+D
打破,如果你想轻松输入数据,你可以使用cat input.txt | go run script.go
或go run script.go < input.txt
。
- 3 回答
- 0 关注
- 261 浏览
添加回答
举报