>백엔드 개발 >Golang >Go에서 일정 시간 동안 정확하게 잠을 잘 수 있는 방법은 무엇입니까?

Go에서 일정 시간 동안 정확하게 잠을 잘 수 있는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-05 07:53:13287검색

How Can I Precisely Sleep for Fractional Time Durations in Go?

소수 시간 동안 수면

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.