ホームページ > バックエンド開発 > Golang > Golang: タイマーが停止した後もチャネルからメッセージを受信するのはなぜですか

Golang: タイマーが停止した後もチャネルからメッセージを受信するのはなぜですか

PHPz
リリース: 2024-02-09 23:36:09
転載
1209 人が閲覧しました

Golang: タイマーが停止した後もチャネルからメッセージを受信するのはなぜですか

Golang: タイマーが停止した後もチャネルからメッセージを受信して​​いるのはなぜですか?これは、多くの Golang 開発者がタイマーを使用するときによく遭遇する問題です。タイマーは Golang で一般的に使用されるツールで、一定時間後に特定の操作を実行するために使用されます。ただし、タイマーを明示的に停止しても、チャネルからメッセージを受信して​​しまう場合があります。一体何が原因でこれが起こるのでしょうか?この記事では、PHP エディターの Zimo がこの質問に詳しく答え、対応する解決策を提供します。

質問内容

最初のコード(例外):

リーリー

2 番目のコード (通常):

リーリー

最初のコードが停止後もタイマー チャネルからメッセージを取得する理由がわかりません。タイマーが役に立たなくなるようなので、これは正常ではないと思います。

2 番目のコードは正常です。違いは、「var ti time.timer」と「var ti *time.timer」です。一方は値であり、もう一方はポインターです。

ポインターに詳しくないのですが、誰か助けてくれませんか?

###ありがとう!

回避策

銘柄記号を参照解除しているため、その値がコピーされます。

停止方法は次のとおりです:

リーリー

タイマーをコピーすると、

&t.r は別の場所を指します。だからこそタイマーは止まらないのです。

したがって、

time.ticker の代わりに *time.ticker を使用する必要があります。

以上がGolang: タイマーが停止した後もチャネルからメッセージを受信するのはなぜですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート