Contexts
Contexts are primarily used for requests spanning multiple processes and API boundaries. Contexts help maintain background information on the state of the object during different phases of a process life cycle as it traverses various API boundary processes.
Here's an example (from https://blog.golang.org/context) of passing a Context parameter:
func httpDo(ctx context.Context, req *http.Request, f func(*http.Response, error) error) error {
// Run the HTTP request in a goroutine and pass the response to f.
tr := &http.Transport{}
client := &http.Client{Transport: tr}
c := make(chan error, 1)
go func() { c <- f(client.Do(req)) }()
select {
case <-ctx.Done():
tr.CancelRequest(req)
<-c // Wait for f to return.
return ctx.Err()
case err := <-c:
return err
}
}Passing the Context parameter to every function in every request provides control over timeouts and cancellation for requests that span APIs and...