繁体   English   中英

从 Go 的上下文中获取超时值

[英]Getting timeout value from Go's context

如何获取上下文中为超时设置的持续时间。

例子:

func f(ctx context.Context) {
    // get ctx timeout value
}

func main() {
    ctx, cancel := context.WithTimeout(context.Background(),2*time.Second)
    defer cancel()
    f(ctx)
}

如何从函数f获取持续时间2*time.Second

如果立即调用 func f ,那么它超时之前的时间就是刚刚设置的时间,因此您可以通过查看截止日期来获取它

package main

import (
    "context"
    "fmt"
    "time"
)

func f(ctx context.Context) {    
         deadline,_:=ctx.Deadline()
         fmt.Println(time.Until(deadline))
    // get ctx timeout value
}

func main() {
    ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
    defer cancel()
    f(ctx)
}

https://play.golang.org/p/n3lZJAMdLYs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM