Golang:如何从终端终止bufio Scan()?

时间:2016-03-02 17:50:08

标签: go

我正在运行dup1 example本书The Go Programming Language(相关代码如下所示):

for input.Scan() {
    counts[input.Text()]++
}

输入一些文本后,我想终止Scan()方法。我已经尝试过Ctrl + D,Ctrl + Z和许多其他组合键而没有运气。只有Ctrl + C可以工作,但也会终止程序。

如何在不退出程序的情况下从终端终止Scan()

我使用os.Stdin在Windows 7上进行开发。

[编辑]

Ctrl+Z不起作用:

感谢。但这对我不起作用:

C:\prj\src\gopl\>go run dup1.go
I have tried all these combinations from the terminal
^Z
^X
^V
^B
^N

^A
^D
^F
^G

^K
^L
^Q
^W
^E
^R
^T
^Y
^U
^O
^P
2(Notes: only Ctrl + C works here)

C:\prj\src\gopl\>

如果我在Ubuntu中运行此程序,只有Ctrl + D有效,Ctrl + Z 停止该程序,Ctrl + C将终止该程序。

3 个答案:

答案 0 :(得分:8)

没人问,但是我在OSX中遇到了这个问题,而这在搜索中出现了。当在行的开头按下control-D时,Mac OSX终端识别EOF。

答案 1 :(得分:1)

对于Windows,在新行上

<Ctrl+Z><Enter>

答案 2 :(得分:1)

ctrl + shift + d将EOF发送到终端,如果它是新行中的第一个字符。

go run main.go

> line one
> another line
> another line
> ctrl + shift + d

您应该看到输出

2 another line

如评论https://stackoverflow.com/a/21658005/1522019中所述。
您可以使用stty all查找EOF组合。我一直做ctrl + d,在我看来与ctrl + D相同。