我有一个循环,其中一些事情根据它运行的状态(手动/自动/学习)发生。我现在希望能够通过按键盘上的伴随字母(“m”代表手动,“a”代表自动,“l”代表学习)让程序在这些状态之间切换。
所以要做到这一点,我需要能够在循环期间捕捉到按键并相应地更改变量状态。我现在有以下内容,它可以捕捉到一个按键,然后是一个输入:
ch := make(chan string)
go func(ch chan string) {
reader := bufio.NewReader(os.Stdin)
for {
s, _ := reader.ReadString('\n')
ch <- s
}
}(ch)
for {
select {
case stdin, _ := <-ch:
fmt.Println("Keys pressed:", stdin)
default:
fmt.Println("Working..")
}
time.Sleep(time.Second)
}
但我需要按下回车键这一事实是不可接受的。
有没有人知道一种非阻塞的方式来捕获普通字母(不是 SIGINT)的按键而无需事后按回车键?
一只斗牛犬
跃然一笑
江户川乱折腾
相关分类