Golang: タイマーが停止した後もチャネルからメッセージを受信しているのはなぜですか?これは、多くの Golang 開発者がタイマーを使用するときによく遭遇する問題です。タイマーは Golang で一般的に使用されるツールで、一定時間後に特定の操作を実行するために使用されます。ただし、タイマーを明示的に停止しても、チャネルからメッセージを受信してしまう場合があります。一体何が原因でこれが起こるのでしょうか?この記事では、PHP エディターの Zimo がこの質問に詳しく答え、対応する解決策を提供します。
最初のコード(例外):
リーリー2 番目のコード (通常):
リーリー最初のコードが停止後もタイマー チャネルからメッセージを取得する理由がわかりません。タイマーが役に立たなくなるようなので、これは正常ではないと思います。
2 番目のコードは正常です。違いは、「var ti time.timer」と「var ti *time.timer」です。一方は値であり、もう一方はポインターです。
ポインターに詳しくないのですが、誰か助けてくれませんか?
###ありがとう! 回避策銘柄記号を参照解除しているため、その値がコピーされます。停止方法は次のとおりです:
リーリー
タイマーをコピーすると、&t.r は別の場所を指します。だからこそタイマーは止まらないのです。
time.ticker の代わりに
*time.ticker を使用する必要があります。
以上がGolang: タイマーが停止した後もチャネルからメッセージを受信するのはなぜですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。