📜  Golang 中的 time.Sleep()函数示例

📅  最后修改于: 2021-10-25 02:37:25             🧑  作者: Mango

在 Go 语言中,时间包提供了确定和查看时间的功能。
Go 语言中的Sleep()函数用于至少在规定的持续时间d 内停止最新的 go-routine。并且睡眠的持续时间为负数或零会导致此方法立即返回。而且,这个函数是在time包下定义的。在这里,您需要导入“时间”包才能使用这些功能。

句法:

func Sleep(d Duration)

这里, d是以秒为单位的睡眠持续时间。

返回值:它在规定的持续时间内暂停最新的 go-routine,然后在睡眠结束后返回任何操作的输出。

示例 1:

// Golang program to illustrate the usage of
// Sleep() function
  
// Including main package
package main
  
// Importing fmt and time
import (
    "fmt"
    "time"
)
  
// Main function
func main() {
  
    // Calling Sleep method
    time.Sleep(8 * time.Second)
  
    // Printed after sleep is over
    fmt.Println("Sleep Over.....")
}

输出:

Sleep Over.....

在这里,在调用 main函数时运行上述代码后,由于Sleep方法,所述操作在给定的持续时间内停止,然后打印结果。

示例 2:

// Golang program to illustrate the usage of
// Sleep() function
  
// Including main package
package main
  
// Importing time and fmt
import (
    "fmt"
    "time"
)
  
// Main function
func main() {
  
    // Creating channel using
    // make keyword
    mychan1 := make(chan string, 2)
  
    // Calling Sleep function of go
    go func() {
        time.Sleep(2 * time.Second)
  
        // Displayed after sleep overs
        mychan1 <- "output1"
    }()
  
    // Select statement
    select {
  
    // Case statement
    case out := <-mychan1:
        fmt.Println(out)
  
    // Calling After method
    case <-time.After(3 * time.Second):
        fmt.Println("timeout....1")
    }
  
    // Again Creating channel using
    // make keyword
    mychan2 := make(chan string, 2)
  
    // Calling Sleep method of go
    go func() {
        time.Sleep(6 * time.Second)
  
        // Printed after sleep overs
        mychan2 <- "output2"
    }()
  
    // Select statement
    select {
  
    // Case statement
    case out := <-mychan2:
        fmt.Println(out)
  
    // Calling After method
    case <-time.After(3 * time.Second):
        fmt.Println("timeout....2")
    }
}

输出:

output1
timeout....2

这里,在上面的代码中,“output1”被打印为超时持续时间(在 After() 方法中)大于睡眠时间(在 Sleep() 方法中)所以,输出在显示超时之前打印,但在超时之后打印,以下情况的超时持续时间小于睡眠时间,因此在打印输出之前会显示超时,因此会打印“timeout….2”。