
标准库time
1.time.Since()
在Go语言中,时间包提供了确定和查看时间的功能。 Go语言中的Since()函数保留时间值,并用于评估与实际时间的差异。此外,此功能在时间包下定义。在这里,您需要导入“time”包才能使用这些功能。
用法:
func Since(t Time) Duration在此,t是时间值。
**注意:**此方法是time.Now().Sub(t)的快捷方式。
**返回值:**它返回一个持续时间值。
范例1:
// Golang program to illustrate in Golang // Including main package package main // Importing fmt and time import ( "fmt" "time" ) // Calling main func main() { // Defining time value // of Since method now:= time.Now() // Prints time elapse fmt.Println("time elapse:", time.Since(now)) }输出:
time elapse:210ns // Can be different at different run times在此,打印从现在到当前时间之间经过的时间。因此,它在不同的运行时间可能会有所不同。
范例2:
// Golang program to illustrate in Golang // Including main package package main // Importing fmt and time import ( "fmt" "time" ) // Calling main func main() { // Defining time value // of Since method timevalue:= time.Now() // Calling Since method // with its parameter Duration:= time.Since(timevalue) // Prints time elapse in nanoseconds fmt.Println("time elapse in nanoseconds:", Duration.Nanoseconds()) }输出:
time elapse in nanoseconds:351 // Can be different at different run times
2.time.Sleep
go
g
g
g
g
3.time.Now().Before()
在短暂的时间间隔后对操作进行重试是合乎情理的,超出一定的重试次数和限定的时间后再报错退出
func WaitForServer(url string) error { const timeout = 1 * time.Minute deadline := time.Now().Add(timeout) for tries := 0; time.Now().Before(deadline); tries++ { _, err := http.Head(url) if err == nil { return nil //成功 } log.Printf("server not responding (%s);retrying...", err) time.Sleep(time.Second << uint(tries)) //指数退避策略 } return fmt.Errorf("server %s failed to respond after %s", url, timeout) }g
4.time.Now().Add()
g
func WaitForServer(url string) error { const timeout = 1 * time.Minute deadline := time.Now().Add(timeout) for tries := 0; time.Now().Before(deadline); tries++ { _, err := http.Head(url) if err == nil { return nil //成功 } log.Printf("server not responding (%s);retrying...", err) time.Sleep(time.Second << uint(tries)) //指数退避策略 } return fmt.Errorf("server %s failed to respond after %s", url, timeout) }
4.
g
g
g
g
g