Understanding Go's Context type
Go provides a package called context
that is useful for two purposes, as outlined here:
- Canceling a chain of function calls after some event (such as a timeout)
- Passing information through a chain of function calls (such as user information)
A Context
object is usually created in either main()
or at the point of ingestion of some request (such as an RPC or HyperText Transfer Protocol (HTTP) request). A basic Context
object is created from our background Context
object, as follows:
import "context" func main() { ctx := context.Background() }
The context
package and the Context
type is an advanced subject, but I want to introduce it here as you will see it used throughout the Go ecosystem.
Using a Context to signal a timeout
Context
is often used to communicate a timer state or to terminate a wait condition—for example, when your program is waiting for a network response.