November 2017
Intermediate to advanced
670 pages
17h 35m
English
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 ...