は、これは問題には鍵が読み込まれるため、アプリケーションが常に待機しているが、コンソールGoでキーを読み取るにはどうすればいいですか?x秒以内に何もキーが押されていなければアプリケーションを続行しますか?
reader := bufio.NewReader(os.Stdin)
// ...
func readKey() rune {
char, _, err := reader.ReadRune()
if err != nil {
fmt.Println("Error reading key: ", err)
}
return char
}
// ...
fmt.Println("Checking keyboard input...")
loop:
for {
keyb := readKey()
switch keyb {
case 'x':
fmt.Println("x key pressed, exiting loop")
break loop
}
}
からキーを読み込むための簡単な方法です。キーが読み込まれるまでわずか5秒待つ場合、キーが読み込まれない場合は、アプリケーションを続行しますか?
私は、このようなncursesのまたは単位(モジュール)がTurboPascalのがCRTと呼ばれ、readkey機能を有していたていたとして、多分依存関係に引っ張らなければならないことを考えています。しかし、依存関係が本当に必要なのか、それとも簡単な方法がありますか?おそらくいくつかのdefer()トリックさえ、私は知らない。
私はそれについて考えと疑問に思った:(キーボード入力を待つ)readln状態でコマンドラインプログラムを持つことが悪いでなければならないと
そして、ここではベースとしてあなたのポストを使用して作業サンプルですそれから、printlnですでに入ってきて、それをハンマーで止めています(コマンドライン/コンソールはスレッドセーフではありませんか?)。 いくつかのプラットフォームではうまくいくかもしれませんが、キーボード入力を待っている読み取り状態に固執しているコマンドラインプログラム状態にprintlnを投げるのは本当に良い方法です... Windows上で動作し、他のプラットフォームについてはわかりません。しかし、安全かどうかは分かりません!回答ありがとう –