Golang: 타이머가 멈춘 후에도 채널에서 메시지를 계속 받는 이유는 무엇인가요? 이는 많은 Golang 개발자가 타이머를 사용할 때 자주 겪는 문제입니다. 타이머는 Golang에서 일반적으로 사용되는 도구로, 일정 시간이 지난 후 특정 작업을 수행하는 데 사용됩니다. 그러나 타이머를 명시적으로 중지하더라도 채널에서 계속 메시지를 받는 경우가 있습니다. 이런 일이 발생하는 원인은 정확히 무엇입니까? 이 기사에서는 PHP 편집자 Zimo가 이 질문에 대해 자세히 답변하고 그에 맞는 솔루션을 제공할 것입니다.
첫 번째 코드(예외):
으아악두 번째 코드(일반):
으아악첫 번째 코드가 중지된 후에도 여전히 타이머 채널에서 메시지를 받는 이유를 이해할 수 없습니다. 타이머를 쓸모 없게 만드는 것처럼 보이기 때문에 이것이 정상이 아니라고 생각합니다.
두 번째 코드는 정상입니다. 차이점은 "var ti time.timer"와 "var ti *time.timer"입니다. 하나는 값이고 다른 하나는 포인터입니다.
저는 포인터에 익숙하지 않습니다. 누구든지 도와주실 수 있나요?
감사합니다!
티커를 역참조하고 해당 값이 복사됩니다.
중지하는 방법은 다음과 같습니다.
으아악타이머를 복사하면 &t.r
다른 곳을 가리킵니다. 이것이 바로 타이머가 멈추지 않는 이유입니다.
그래서 *time.ticker
而不是 time.ticker
를 사용해야 합니다.
위 내용은 Golang: 타이머가 멈춘 후에도 채널에서 계속 메시지를 받는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!