2016-03-02 150 views
3

我运行的是dup1 exampleThe Go Programming Language书(如下图所示相关的代码):Golang:如何从终端终止bufio Scan()?

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将终止它。

+0

据我所知,在Windows下,EOF被映射为Ctrl + Z。也许你的终端重新映射到其他东西,看看它的配置。 – Elwinar

+0

你确定你在一个新行的*开头键入了Ctrl + Z吗?扫描可能需要实际接收EOF。 – Aedolon

回答

1

对于Windows,在新的一行,

<Ctrl+Z><Enter> 
+0

虽然我在Windows 7上遇到了与golang相同的问题,但这通常用于C中的EOF。 – sager89

5

没有人问,但我在OSX这个问题,这次来到了一个搜索。当在一行的开头按下control-D时,Mac OSX终端识别EOF。