阅读从围棋标准输入一个字符(不按Enter键)(Read a character from stan

2019-07-20 18:41发布

我想我的应用程序所示:

press any key to exit ...

当我按下任意键退出。

我怎样才能做到这一点?

注:我用Google搜索,但所有的找到的需要,我什么按在最后输入 。 我想是这样Console.ReadKey()在C#。

我运行微软Windows。

Answer 1:

termbox-GO是一种重量轻转到本地包它提供一些基本的终端控制。 包括获得原始模式输入的能力(一次读取一个字符没有默认的行缓冲行为)。

它也有不同的系统之间相当好的兼容性。

和键盘扩展termbox,去给喜欢多快捷键和序列一些额外的键盘功能。



Answer 2:

这是为那些运行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)+")")
    }
}


Answer 3:

去-termbox是非常重量级的。 它希望整个终端窗口接管。 例如,它会清除在启动屏幕,你想要什么这可能不是。

我把这个一起在OSX。 只是一个很小的getchar():

https://github.com/paulrademacher/climenu/blob/master/getchar.go



Answer 4:

你可以使用这个库(矿): https://github.com/eiannone/keyboard

这是获得一个按键的例子:

char, _, err := keyboard.GetSingleKey()
if (err != nil) {
    panic(err)
}
fmt.Printf("You pressed: %q\r\n", char)


Answer 5:

您可以从原始模式的终端读取单个按键。 这里是一个包,应当向你的程序提供原始终端模式。 抓住:它仅仅是Linux操作系统。



Answer 6:

试试这个- http://play.golang.org/p/kg-QirlucY 。

从刚刚读os.Stdin在结束func main



文章来源: Read a character from standard input in Go (without pressing Enter)
标签: go stdin