#go
#Вперед
Вопрос:
Как узнать, как долго устанавливается время ожидания в контексте.
пример:
func f(ctx context.Context) {
// get ctx timeout value
}
func main() {
ctx, cancel := context.WithTimeout(context.Background(),2*time.Second)
defer cancel()
f(ctx)
}
Как получить длительность 2*time.Second
внутри функции f
?
Ответ №1:
Если функция 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)
}