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

WBOY
リリース: 2024-02-06 09:45:04
転載
778 人が閲覧しました

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

#質問内容

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

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

リーリー

実装の編集

リーリー

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

リーリー

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


正解


メインのゴルーチンで

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

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

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

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

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!