【发布时间】:2016-04-01 13:37:19
【问题描述】:
我有这个简单的代码可以从控制台读取所有输入:
input := bufio.NewScanner(os.Stdin) //Creating a Scanner that will read the input from the console
for input.Scan() {
if input.Text() == "end" { break } //Break out of input loop when the user types the word "end"
fmt.Println(input.Text())
}
代码原样有效。我想要做的是摆脱 if 子句。根据我对文档的理解,如果一行为空 input.Scan() 应该返回 false 并因此跳出循环。
Scan 将 Scanner 推进到下一个令牌,然后可以通过 Bytes 或 Text 方法获得该令牌。当扫描停止时,它返回 false,无论是到达输入的末尾还是错误。 Scan 返回 false 后,Err 方法将返回扫描过程中发生的任何错误,除非是
io.EOF,否则 Err 将返回 nil。如果 split 函数在没有推进输入的情况下返回 100 个空标记,则扫描恐慌。这是扫描仪的常见错误模式。
我是否误解了文档,并且实际上有必要使用这样的 if 子句来爆发? (我正在使用 Go 1.5.2 使用“go run”运行程序。)
【问题讨论】:
-
我想做的是摆脱 if 子句为什么这是个问题?
-
如果我删除 if 子句,然后按 Return,程序不会离开循环。在控制台上,它只是让我进入下一行。循环后的代码没有被执行。
标签: go