英文:
Golang: How to terminate the bufio Scan() from terminal?
问题
我正在运行《Go程序设计语言》这本书中的dup1示例(相关代码如下所示):
for input.Scan() {
counts[input.Text()]++
}
在输入一些文本行后,我想终止Scan()
方法。我尝试了Ctrl+D、Ctrl+Z和许多其他组合键,但都没有成功。只有Ctrl+C可以终止程序运行。
如何在终端中终止Scan()
而不退出程序?
我在Windows 7上使用os.Stdin
进行开发。
【编辑】
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(注:只有Ctrl + C在这里起作用)
C:\prj\src\gopl>
如果我在Ubuntu上运行这个程序,只有Ctrl + D
起作用,Ctrl + Z
会停止程序,Ctrl + C
会终止程序运行。
英文:
I am running the dup1 example from [The Go Programming Language][1] book (related code shown below):
for input.Scan() {
counts[input.Text()]++
}
After typing some lines of text, I want to terminate the Scan()
method. I've tried Ctrl+D, Ctrl+Z and many other key combinations without luck. Only Ctrl+C works but that also terminates the program.
How can I terminate the Scan()
from terminal without exiting the program?
I am developing on Windows 7 using os.Stdin.
[Edit]
Ctrl+Z
doesn't work:
Thanks. But that doesn't work for me:
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\>
If I run this program in Ubuntu, only Ctrl + D
works, Ctrl + Z
will Stop the program and Ctrl + C
will terminate it.
[1]: http://www.gopl.io/
答案1
得分: 10
没有人问,但我在OSX上遇到了这个问题,并在搜索中找到了解决方法。Mac OSX终端在按下控制-D时会将其识别为EOF,而且要在行的开头按下。
英文:
No one asked but I had this problem in OSX and this came up in a search. Mac OSX terminals recognize EOF when control-D is pressed at the beginning of a line.
答案2
得分: 4
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
是一样的。
英文:
ctrl + shift + d
will send EOF to the terminal if it's the first character in a new line.
go run main.go
> line one
> another line
> another line
> ctrl + shift + d
And you should see the output
2 another line
As described in this comment https://stackoverflow.com/a/21658005/1522019 .
You can use stty all
to find EOF combination. I kept doing ctrl + d
which in my mind is the same as ctrl + D
.
答案3
得分: 1
对于Windows系统,在新的一行上,输入以下内容:
<Ctrl+Z><Enter>
英文:
For Windows, on a new line,
<Ctrl+Z><Enter>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论