【发布时间】:2017-03-02 17:33:27
【问题描述】:
我有以下程序从标准输入读取用户输入:
var input string = ""
exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run()
exec.Command("stty", "-F", "/dev/tty", "-echo").Run()
var b []byte = make([]byte, 1)
for {
input += string(b)
}
我想在 for 循环中放置某种条件,以便在用户按下“enter”(例如)时“中断”或在用户按下(退格)时从字符串中删除一个字符。但是,我无法弄清楚这两个键的字节数组或字符串表示形式是什么。我该如何解决这个问题? enter 只打印一个 \w 并退格打印一个未定义的字符。
【问题讨论】:
-
在 unix 系统上,“返回”很可能是
"\n"和"\b"或"\x7f"字符串形式的退格之一。 -
为什么不使用
github.com/nsf/termbox-go和/或github.com/jteeuwen/keyboard/termbox(使用前者)?我有一种感觉,你选择了一种相当奇特的方法来解决你的任务。相反,您应该将终端切换到“原始”模式并处理它发送给您的任何数据。termbox为您完成繁重的工作。 -
考虑使用godoc.org 来大致了解这些软件包可以为您做什么(并搜索其他选项)。