go - 获取在 Go 中执行函数所花费的时间

标签 go

defer 语句推迟函数的执行,直到周围的函数返回。 但是,如果我尝试打印执行以下函数所花费的时间,它总是打印 0。

func sum() {
    start := time.Now()

    //expecting to print non zero value but always gets 0
    defer fmt.Println(time.Now().Sub(start))

    sum := 0
    for i := 1; i < 101; i++ {
        sum += i
    }
    time.Sleep(1 * time.Second)
    fmt.Println(sum)
}

片段:https://play.golang.org/p/46dxtS5beET

最佳答案

延迟函数的参数在函数被延迟时被计算。使用以下代码按预期评估耗时:

defer func() { fmt.Println(time.Now().Sub(start)) }()

answer to a related question描述了如何将时序逻辑封装在一个可重用的函数中。

关于go - 获取在 Go 中执行函数所花费的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54451865/

相关文章:

go - 在 CloudRun 中创建 V4 签名 URL

go - golang中的等效盐和哈希

mongodb - 如何编写mongo管道

database - 对可空结构字段使用 nil 或 Null* 哪个更好

sqlite - 如何定期将内存中的sqlite保存到磁盘

pointers - 可以将结构指针方法中的指针重新分配给另一个实例吗?

go - float 的字节顺序

go - 防止 Gin 去除某些字符

go - golang中用于连接到mysql的无效字符

go - 从包中导入所有内容