ホームページ  >  記事  >  バックエンド開発  >  goでタイマーが完了したときに関数から戻るにはどうすればよいですか?

goでタイマーが完了したときに関数から戻るにはどうすればよいですか?

WBOY
WBOY転載
2024-02-06 09:45:04781ブラウズ

当 go 中计时器完成时如何从函数返回?

#質問内容

おもちゃのテスト cli プログラムの開発を始めたところです。タイマーを実装して、タイマーが終了するとクイズが終了するようにしようとしています。

これは私の最初の実装です。

リーリー

実装の編集

リーリー

次の出力とエラーが表示され続けます:

リーリー

チャネルとゴルーチンについてはまだ十分に理解しておらず、何が起こっているのか理解できません。期待される動作は、タイマーが停止すると、「クイズが終了しました」と出力し、値を QuizFinished チャネルに送信し、その値が select ステートメントで読み取られることです。私が抱えているもう 1 つの問題は、Scanln がクイズ終了後にユーザーの入力を待つことです。助けていただければ幸いです。


正解


メインのゴルーチンで

Scanln 関数を呼び出すと、関数は一時停止してユーザー入力を待ちます。別のゴルーチンでタイマーが完了し、メインのゴルーチンに通知しようとしても、メインのゴルーチンは「スキャナー」によってブロックされているため、応答しません。

そのため、タイマーが期限切れになった後でも、

Scanln はユーザー入力を待ち続けます。 リーリー

以上がgoでタイマーが完了したときに関数から戻るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。