Explain the use of Go's time and duration types for working with dates and times?
Go has two types for working with dates and times: time.Time and time.Duration.
**time.Time**
is a type that represents a moment in time, including information about the year, month, day, hour, minute, second, and nanosecond. It can be used to represent both absolute and relative times, and supports a wide range of operations such as comparison, addition, and subtraction.
Here's an example of how to create a **time.Time**
value:
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2023, time.March, 3, 10, 30, 0, 0, time.UTC)
fmt.Println(t)
}
In this example, we create a **time.Time**
value representing March 3rd, 2023 at 10:30am in the UTC timezone.
**time.Duration**
is a type that represents a duration of time, such as 5 minutes, 30 seconds, or 100 milliseconds. It is represented as a signed integer number of nanoseconds, and supports a wide range of operations such as comparison, addition, and subtraction.
Here's an example of how to create a **time.Duration**
value:
package main
import (
"fmt"
"time"
)
func main() {
d := time.Duration(10 * time.Minute)
fmt.Println(d)
}
In this example, we create a **time.Duration**
value representing 10 minutes.
These types are very useful for working with dates and times in Go, and are used extensively throughout the standard library and third-party packages.