在Go語言中,時間包提供了確定和查看時間的函數。 Go語言的AfterFunc()函數用於等待經過的時間,此後,它將在其自己的go-routine中調用已定義的函數“f”。此外,此函數在時間包下定義。在這裏,您需要導入“time”包才能使用這些函數。
用法:
func AfterFunc(d Duration, f func()) *Timer
這裏,* Timer是指向計時器的指針。
返回值:它返回一個計時器,該計時器然後借助其Stop()方法取消調用。
範例1:
// Golang program to illustrate the usage of
// AfterFunc() function
// Including main package
package main
// Importing fmt and time
import (
"fmt"
"time"
)
// Main function
func main() {
// Defining duration parameter of
// AfterFunc() method
DurationOfTime:= time.Duration(3) * time.Second
// Defining function parameter of
// AfterFunc() method
f:= func() {
// Printed when its called by the
// AfterFunc() method in the time
// stated above
fmt.Println("Function called by "+
"AfterFunc() after 3 seconds")
}
// Calling AfterFunc() method with its
// parameter
Timer1:= time.AfterFunc(DurationOfTime, f)
// Calling stop method
// w.r.to Timer1
defer Timer1.Stop()
// Calling sleep method
time.Sleep(10 * time.Second)
}
輸出:
Function called by AfterFunc() after 3 seconds
此處,在3秒鍾後返回輸出,然後返回的計時器使用Stop()方法取消對該函數的調用。之後,在睡眠時間結束後退出程序。
範例2:
// Golang program to illustrate the usage of
// AfterFunc() function
// Including main package
package main
// Importing fmt and time
import (
"fmt"
"time"
)
// Main function
func main() {
// Creating channel using
// make keyword
mychan:= make(chan int)
// Calling AfterFunc() method
// with its parameters
time.AfterFunc(6*time.Second, func() {
// Printed after stated duration
// by AfterFunc() method is over
fmt.Println("6 seconds over....")
// loop stops at this point
mychan <- 30
})
// Calling for loop
for {
// Select statement
select {
// Case statement
case n:= <-mychan:
// Printed after the loop stops
fmt.Println(n, "is arriving")
fmt.Println("Done!")
return
// Returned by default
default:
// Printed until the loop stops
fmt.Println("time to wait")
// Sleeps for 3 seconds
time.Sleep(3 * time.Second)
}
}
}
輸出:
time to wait time to wait 6 seconds over.... 30 is arriving Done!
在上麵的示例中,在指定的持續時間結束之後,通道返回其輸出,程序退出。
相關用法
- Golang math.Lgamma()用法及代碼示例
- Golang math.Float64bits()用法及代碼示例
- Golang atomic.AddInt64()用法及代碼示例
- Golang atomic.StoreInt64()用法及代碼示例
- Golang reflect.FieldByIndex()用法及代碼示例
- Golang string.Contains用法及代碼示例
- Golang bits.Sub()用法及代碼示例
- Golang io.PipeWriter.CloseWithError()用法及代碼示例
- Golang time.Round()用法及代碼示例
- Golang reflect.AppendSlice()用法及代碼示例
- Golang reflect.ChanOf()用法及代碼示例
- Golang flag.Bool()用法及代碼示例
- Golang time.Sleep()用法及代碼示例
- Golang time.Time.Year()用法及代碼示例
- Golang reflect.DeepEqual()用法及代碼示例
- Golang reflect.Indirect()用法及代碼示例
- Golang reflect.CanAddr()用法及代碼示例
- Golang reflect.CanInterface()用法及代碼示例
- Golang reflect.CanSet()用法及代碼示例
- Golang reflect.Cap()用法及代碼示例
注:本文由純淨天空篩選整理自nidhi1352singh大神的英文原創作品 time.AfterFunc() Function in Golang With Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。