我想要我的应用节目:
press any key to exit ...
当我按任意键时,它会退出。
我怎样才能做到这一点?
注意:我用谷歌搜索了但是我发现的所有内容都需要在最后输入。我想在C#中使用像Console.ReadKey()
这样的东西。
我正在运行MS Windows。
termbox-go是一个轻量级Go-native包,提供一些基本的终端控制。包括以原始模式获取输入的能力(一次读取一个字符而没有默认的行缓冲行为)。
它在不同系统中也具有相当好的兼容性。
keyboard扩展了termbox-go以提供一些额外的键盘功能,如多键快捷键和序列。
对于运行UNIX系统的人来说,这是一个最小的工作示例:
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
// disable input buffering
exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run()
// do not display entered characters on the screen
exec.Command("stty", "-F", "/dev/tty", "-echo").Run()
var b []byte = make([]byte, 1)
for {
os.Stdin.Read(b)
fmt.Println("I got the byte", b, "("+string(b)+")")
}
}
go-termbox非常重量级。它想要接管整个终端窗口。例如,它会在启动时清除屏幕,这可能不是您想要的。
我把它放在OSX上。只是一个小小的getchar():
https://github.com/paulrademacher/climenu/blob/master/getchar.go
你可以使用这个库(我的):https://github.com/eiannone/keyboard
这是获得单次击键的示例:
char, _, err := keyboard.GetSingleKey()
if (err != nil) {
panic(err)
}
fmt.Printf("You pressed: %q\r\n", char)
您可以在原始模式下从终端读取单个按键。 Here是一个应该为您的程序提供原始终端模式的软件包。 Catch:它只是Linux。
试试这个 - http://play.golang.org/p/kg-QirlucY。
请阅读os.Stdin
末尾的func main