"fmt"
)
func main() {
for true {
if key.Pressed('p') {
// Do some work
} else if key.Pressed('s'){
fmt.Println('exit')
return
}
}
}
https://github.com/eiannone/keyboard не помог, там все останавливается пока не нажмешь какую-нибудь кнопку
чтобы как бы в фоне проверял
обернуть в go func() {...}()
так? не работает for true { go func(){ _, key, _ := keyboard.GetKey() fmt.Println(key) }() fmt.Println("test") }
for тоже нужно обернуть. плюс программа не должна завершаться, т.е. нужна какая-то работа на переднем плане. почитайте про goroutines
вообще у меня немного другая задача, есть workerpool, нужно его поставить на паузу, через время продолжить работу, но так как keyboard.GetKey() ждет пока нажмется кнопка, воркер пулл ничего не делает вот здесь я спрашивал, последний коммент от меня https://github.com/gammazero/workerpool/issues/42
а не проще ли SIGSTOP и SIGCONT отправлять?
Явно нужно решение с использованием каналов. В один отправлять данные для workpool'а, во-второй - нажатия клавиш, и соответственно goroutin'ы для каждого. А в главной программе с помощью select получать данные из этих каналов и выполнять уже действия с workpool'ом
Обсуждают сегодня