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

📅  最后修改于: 2021-10-25 03:01:14             🧑  作者: Mango

在 Go 语言中,时间包提供了确定和查看时间的功能。 Go 语言中的Tick()函数是NewTicker函数的实用程序包装器。它只允许访问滴答通道。此外, Tick对不需要关闭 Ticker 的客户很有帮助。并且Tick方法在声明的持续时间小于或等于0时返回nil。而且,这个函数是在time包下定义的。在这里,您需要导入“time”包才能使用这些功能。

句法:

func Tick(d Duration) <-chan Time

这里, d是股票报价的持续时间, chan是报价渠道。

注意:股票代码用于在规定的时间间隔内频繁地做某事。

返回值:每隔一定时间返回当前日期和实际时间。如果 d <= 0,则返回 nil。

示例 1:

// Golang program to illustrate the usage of
// Tick() function
  
// Including main package
package main
  
// Importing fmt and time
import (
    "fmt"
    "time"
)
  
// Defining UTCtime
func UTCtime() string {
    return ""
}
  
// Main function
func main() {
  
    // Calling Tick method
    // using range keyword
    for tick := range time.Tick(3 * time.Second) {
  
        // Prints UTC time and date
        fmt.Println(tick, UTCtime())
    }
}

输出:

2020-04-02 03:16:22.27131713 +0000 UTC m=+3.000249815 
2020-04-02 03:16:25.271334601 +0000 UTC m=+6.000267330 
2020-04-02 03:16:28.271312516 +0000 UTC m=+9.000245191 
2020-04-02 03:16:31.271369788 +0000 UTC m=+12.000302595 
2020-04-02 03:16:34.271309254 +0000 UTC m=+15.000241952 
2020-04-02 03:16:37.271324182 +0000 UTC m=+18.000256858 
2020-04-02 03:16:40.271322789 +0000 UTC m=+21.000255504 
2020-04-02 03:16:43.271295568 +0000 UTC m=+24.000228305......so on

在这里,我们使用了 range 关键字来迭代通道。在这里,当前日期和时间在固定的时间间隔后返回。因此,在不同的运行中输出是不同的。在这里循环不会停止,直到您终止它。

示例 2:

// Golang program to illustrate the usage of
// Tick() function
// Including main package
package main
  
// Importing fmt and time
import (
    "fmt"
    "time"
)
  
// Defining UTCtime
func UTCtime() string {
    return ""
}
  
// Main function
func main() {
  
    // Calling Tick method using range
    // keyword
    for tick := range time.Tick(-1 * time.Second) {
  
        // Prints UTC time and date
        fmt.Println(tick, UTCtime())
    }
}

输出:

fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan receive (nil chan)]:
main.main()
    /home/runner/SociableInsubstantialCommunication/main.go:23 +0x149

在这里,在上面的代码中,声明的持续时间为负,因此返回 nil 并发生错误。