소수 시간 동안 수면
Go에서는 소수 시간 동안 잠을 자는 것이 가능하므로 수면 시간을 정밀하게 제어할 수 있습니다. . 그러나 분수로 작업할 때는 특정 제한 사항을 고려해야 합니다.
유형이 지정되지 않은 상수 작업
다음 코드를 고려하세요.
s := time.Hour/73.0 time.Sleep(s)
이 코드 성공적으로 실행되고 원하는 부분 기간 동안 절전 모드로 전환됩니다. 유형이 지정되지 않은 숫자 상수는 사용되는 상황에 따라 다양한 유형을 취할 수 있습니다. 이 경우 73.0은 시간이 됩니다. 오른쪽 표현식에 필요하기 때문에 지속 시간입니다.
실패 유형 불일치
그러나 다음 코드는 다음과 같은 오류로 실패합니다. 유형 불일치 오류:
d := 73.0 s := time.Hour/d time.Sleep(s)
이 실패의 이유는 d가 float64이기 때문입니다. 기본. time.Hour를 d로 나누려고 하면 유형이 일치하지 않습니다.
분수에 대한 명시적 변환
후자의 코드가 작동하도록 하려면 시간에 대한 명시적 변환 .Duration이 필요합니다:
d := 73.0 s := time.Hour / time.Duration(d) time.Sleep(s)
또는 올바른 이름으로 d를 선언할 수도 있습니다. 유형:
d := time.Duration(73.0) s := time.Hour / d time.Sleep(s)
정수가 아닌 분수에 대한 고려 사항
기간의 분수 부분을 int64로 표현할 수 없는 경우, 더 큰 분수의 경우 2^53보다 큰 경우 time.Hour를 float64로 변환하고 나눗셈을 수행한 다음 결과를 다시 변환해야 합니다. 시간.기간:
d := 73.5 s := time.Duration(float64(time.Hour) / d) time.Sleep(s)
위 내용은 Go에서 일정 시간 동안 정확하게 잠을 잘 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!