go package学习——time

package time提供测量和显示时间的能力。


Index

Examples
Package Files

format.go sleep.go sys_unix.go tick.go time.go zoneinfo.go zoneinfo_read.go zoneinfo_unix.go


1. 基本函数


func After

func After(d Duration) <-chan Time
在等待了d时间间隔后,向返回channel发送当前时间。与NewTimer(d).C等效。事例如下:



select {
case m := <-c:
    handle(m)
case <-time.After(5 * time.Minute):
    fmt.Println("timed out")
}
主要用于超时处理,以防死锁。



func Sleep

func Sleep(d Duration)
挂起当前goroutine,d时间间隔。



time.Sleep(100 * time.Millisecond)

func Tick

func Tick(d Duration) <-chan Time
Tick是NewTicker的一个封装,只用于访问ticking channel;用户不需要关闭ticker。示例:



c := time.Tick(1 * time.Minute)
for now := range c {
    fmt.Printf("%v %s\n", now, statusUpdate())
}
2. type Duration



type Duration

type Duration int64
Duration是两个纳秒时间标记之间的间隔,其表示的最大间隔是290年。



const (
    Nanosecond  Duration = 1
    Microsecond          = 1000 * Nanosecond
    Millisecond          = 1000 * Microsecond
    Second               = 1000 * Millisecond
    Minute               = 60 * Second
    Hour                 = 60 * Minute
)
上面的常量都是常用的duration,需要记住。


如果将一个整数转化成一个duration的话,需要这么做:


seconds := 10
fmt.Print(time.Duration(seconds)*time.Second) // prints 10s
计算经过的时间间隔的示例如下,此示例很通用:



t0 := time.Now()
expensiveCall()
t1 := time.Now()
fmt.Printf("The call took %v to run.\n", t1.Sub(t0))
func Since
func Since(t Time) Duration
Since返回从时间t开始的已流逝时间,它是time.Now().Sub(t)的浓缩版。


3. type Month


type Month

type Month int
const (
    January Month = 1 + iota
    February
    March
    April
    May
    June
    July
    August
    September
    October
    November
    December
)
注意其写法。


4. type Ticker


type Ticker

type Ticker struct {
    C <-chan Time // The channel on which the ticks are delivered.
    // contains filtered or unexported fields
}
Ticker包含一个channel,此channel以固定间隔发送ticks。



func NewTicker
func NewTicker(d Duration) *Ticker
返回一个Ticker,此Ticker包含一个channel,此channel以给定的duration发送时间。duration d必须大于0.



func (*Ticker) Stop
func (t *Ticker) Stop()
用于关闭相应的Ticker,但并不关闭channel。


5. type Time


type Time

type Time struct {      // contains filtered or unexported fields }
Time以纳秒来表示一个时刻。程序应该存储或传递Time值,而不是指针,即time.Time,而非*time.Time。


6. type Timer


type Timer


type Timer struct {
    C <-chan Time
    // contains filtered or unexported fields
}
Timer type代表了一个事件,如果不是被AfterFunc创建的Timer,当Timer过期,当前时间将发送到C。



func AfterFunc
func AfterFunc(d Duration, f func()) *Timer
AfterFunc等待duration耗尽后,在当前的goroutine中调用f函数。它返回一个Timer,利用此Timer的Stop方法,可以取消调用f函数。



转载于:https://my.oschina.net/renguijiayi/blog/159233

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值