如何从scanner.scan()的循环中跳出?

huangapple go评论71阅读模式
英文:

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
		}
	}
}

huangapple
  • 本文由 发表于 2016年4月11日 21:06:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/36549600.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定