英文:
How to break from the scanner.scan() for-loop?
问题
当我使用"bufio"包时,标准的代码如下:
input := bufio.NewScanner(os.Stdin)
for input.Scan() {
// xxxxx
}
当我运行程序时,无论我输入什么,for循环都无法停止。我尝试过换行符、空格、ctrl-d、ctrl-z。根据文档,一个空白的换行符应该能够停止程序。
该程序在Windows 7的CMD环境或mingw-bash下运行。
谢谢。
英文:
When I use "bufio" package, the standard code is just like:
input := bufio.NewScanner(os.Stdin)
for input.Scan() {
// xxxxx
}
When I run the program, the for-loop can't stop whatever I input. I have tried newline, space, ctrl-d, ctrl-z. According to the document, a blank newline should be able to stop the program.
The program is running under Windows 7 CMD environment, or mingw-bash.
Thanks.
答案1
得分: 3
你可以输入一个特定的字符串作为停止循环的信号。在下面的示例中,每当输入"quit"时,循环就会中断。
package main
import (
"bufio"
"os"
)
func main() {
input := bufio.NewScanner(os.Stdin)
for input.Scan() {
indata := input.Text()
if indata == "quit" {
break
}
}
}
英文:
You may input some specific string as a signal to stop the loop. In the below example, whenever "quit" is entered, the loop breaks.
package main
import (
"bufio"
"os"
)
func main() {
input := bufio.NewScanner(os.Stdin)
for input.Scan() {
indata := input.Text()
if indata == "quit" {
break
}
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论