У меня есть цикл, в котором некоторые вещи происходят в соответствии с состоянием, в котором он работает (ручной / автоматический / обучение).Теперь я хочу позволить программе переключаться между этими состояниями, нажимая сопровождающие буквы на клавиатуре («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) без необходимости нажимать ввод после?