Go Package time: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 28: Line 28:


=<tt>Time</tt>=
=<tt>Time</tt>=
A time structure.
A time structure that represents an instant in time with nanosecond precision.
 
==<tt>sec()</tt>==
==<tt>sec()</tt>==
Return seconds since Jan 1 year 1.
Return seconds since Jan 1 year 1.
Line 38: Line 39:


The function can be used with a <code>select</code> statement to [[Go_Channels#Timing_Out_select|time out the <code>select</code> statement]] if none of the participating channels ever unblock. It does that by returning a [[Go_Channels#Overview|channel]] what will send the current time after the provided duration.
The function can be used with a <code>select</code> statement to [[Go_Channels#Timing_Out_select|time out the <code>select</code> statement]] if none of the participating channels ever unblock. It does that by returning a [[Go_Channels#Overview|channel]] what will send the current time after the provided duration.
=<tt>Duration</tt>=
=<tt>Duration</tt>=



Revision as of 19:21, 13 February 2024

External

Internal

Overview

  • time.After returns a channel that after the given duration, will send current time on it. This can be used to implement a timeout with select.

time.Sleep()

https://golang.org/pkg/time/#Sleep

Sleep pauses the current goroutine for at least the duration d. A negative or zero duration causes Sleep to return immediately:

import "time"
...
secs := 10
time.Sleep(time.Duration(secs) * time.Second)

Other available time units: time.Milliseconds.

time.Now()

Return the current local time as an instance of a Time struct.

time.Since()

Time

A time structure that represents an instant in time with nanosecond precision.

sec()

Return seconds since Jan 1 year 1.

UnixNano()

Return the number of nanoseconds elapsed since January 1, 1970 UTC, represented on 8 bytes (int64). The result does not depend on the location associated with the time instance the method was called on.

After(Duration)

The After() returns a channel that will provide a Time instance after the given duration elapses. Equivalent with NewTimer(d).C.

The function can be used with a select statement to time out the select statement if none of the participating channels ever unblock. It does that by returning a channel what will send the current time after the provided duration.

Duration

Idioms

A Clock that Does Something Every Second

for range time.Tick(1 * time.Second) {
  fmt.Printf(".\n")
}