Go语言 传递给函数的奇怪变量?时间,不按分钟计算的分钟

lx0bsm1f  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(89)

我有一个功能

func myFunc(mycontext context.Context, duration time.Duration, f someFunc) {
for {
   select {
      case <- time.After(duration):
          // do some stuff
      case <-mycontext.Done():
          // Other stuff
   }
}

字符串
这被称为与

duration := time.Minute
go myFunc(mycontext, duration, myFuncPointer)


今天我注意到这个函数永远不会退出。在暂停和检查gothread时,我看到我的duration变量具有此值

github.com/cenkalti/backoff/v4.DefaultMaxInterval (60000000000)


为什么它有这个值,而不是我的一分钟持续时间?此外,持续时间从来没有得到重新分配在任何时候,所以我不认为它。

zfciruhq

zfciruhq1#

我看到我的duration变量有这个值

github.com/cenkalti/backoff/v4.DefaultMaxInterval (60000000000)

字符串
为什么它有这个值,而不是我的一分钟持续时间?
阅读Go标准库package time文档。

type Duration int64


持续时间表示两个时刻之间经过的时间,以int64纳秒计数表示。

const (
    Nanosecond  Duration = 1
    Microsecond          = 1000 * Nanosecond
    Millisecond          = 1000 * Microsecond
    Second               = 1000 * Millisecond
    Minute               = 60 * Second
    Hour                 = 60 * Minute
)


time.Minute60000000000纳秒。

package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println(int64(time.Minute))
}


https://go.dev/play/p/YVx4ddJYnv6

60000000000

相关问题