【问题标题】:How to break from the scanner.scan() for-loop? [duplicate]如何打破scanner.scan() for-loop? [复制]
【发布时间】:2016-04-11 13:06:37
【问题描述】:

当我使用“bufio”包时,标准代码是这样的:

input := bufio.NewScanner(os.Stdin)
for input.Scan() {
    // xxxxx
}

当我运行程序时,for 循环无法停止我输入的任何内容。我试过换行符、空格、ctrl-d、ctrl-z。根据文档,空白换行应该能够停止程序。

程序在Windows 7 CMD环境下运行,或者mingw-bash。

谢谢。

【问题讨论】:

  • scan() 会在输入结束或出现错误时停止
  • 同意@icza,它是重复的。顺便问一下,根据什么文件应该为空白换行符停止?
  • @AlexanderTrakhimenok 我误解了文件。我从重复的问题中得到了答案。谢谢。

标签: go


【解决方案1】:

您可以输入一些特定的字符串作为停止循环的信号。在下面的示例中,只要输入“quit”,循环就会中断。

package main

import (
    "bufio"
    "os"
)

func main() {
    input := bufio.NewScanner(os.Stdin)
    for input.Scan() {
        indata := input.Text()
        if indata == "quit" {
            break
        }
    }
}

【讨论】:

  • 感谢您的回答。
  • 可以在终端模拟EOF。在 Linux 上是 CTRL + D,在 WindowsCTRL + Z: source
猜你喜欢
  • 2015-07-06
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多