當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Golang time.AfterFunc()用法及代碼示例

在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!

在上麵的示例中,在指定的持續時間結束之後,通道返回其輸出,程序退出。




相關用法


注:本文由純淨天空篩選整理自nidhi1352singh大神的英文原創作品 time.AfterFunc() Function in Golang With Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。