Golang: 타이머가 멈춘 후에도 채널에서 계속 메시지를 받는 이유는 무엇입니까?

PHPz
풀어 주다: 2024-02-09 23:36:09
앞으로
1177명이 탐색했습니다.

Golang: 타이머가 멈춘 후에도 채널에서 계속 메시지를 받는 이유는 무엇입니까?

Golang: 타이머가 멈춘 후에도 채널에서 메시지를 계속 받는 이유는 무엇인가요? 이는 많은 Golang 개발자가 타이머를 사용할 때 자주 겪는 문제입니다. 타이머는 Golang에서 일반적으로 사용되는 도구로, 일정 시간이 지난 후 특정 작업을 수행하는 데 사용됩니다. 그러나 타이머를 명시적으로 중지하더라도 채널에서 계속 메시지를 받는 경우가 있습니다. 이런 일이 발생하는 원인은 정확히 무엇입니까? 이 기사에서는 PHP 편집자 Zimo가 이 질문에 대해 자세히 답변하고 그에 맞는 솔루션을 제공할 것입니다.

질문 내용

첫 번째 코드(예외):

으아악

두 번째 코드(일반):

으아악

첫 번째 코드가 중지된 후에도 여전히 타이머 채널에서 메시지를 받는 이유를 이해할 수 없습니다. 타이머를 쓸모 없게 만드는 것처럼 보이기 때문에 이것이 정상이 아니라고 생각합니다.

두 번째 코드는 정상입니다. 차이점은 "var ti time.timer"와 "var ti *time.timer"입니다. 하나는 값이고 다른 하나는 포인터입니다.

저는 포인터에 익숙하지 않습니다. 누구든지 도와주실 수 있나요?

감사합니다!

해결 방법

티커를 역참조하고 해당 값이 복사됩니다.

중지하는 방법은 다음과 같습니다.

으아악

타이머를 복사하면 &t.r다른 곳을 가리킵니다. 이것이 바로 타이머가 멈추지 않는 이유입니다.

그래서 *time.ticker 而不是 time.ticker를 사용해야 합니다.

위 내용은 Golang: 타이머가 멈춘 후에도 채널에서 계속 메시지를 받는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!