What is the context package used for and how do you use it correctly?
Assesses fundamental understanding of Go conventions, runtime behavior, and memory/performance considerations.
Hiring managers look for precision, avoidance of ambiguous jargon, and ability to explain trade-offs under real production conditions.
context.Context carries deadlines, cancellation signals and request-scoped values across API boundaries and goroutines. It is how cancellation and timeouts propagate through a call tree.
func handler(ctx context.Context) error {
ctx, cancel := context.WithTimeout(ctx, 2*time.Second)
defer cancel()
req, _ := http.NewRequestWithContext(ctx, "GET", url, nil)
_, err := http.DefaultClient.Do(req)
return err
}
Key rules:
- Cancellation propagates down the tree: cancelling a parent cancels every derived context.
- Always call the cancel function, usually with
defer, to release timers and resources. - Pass
ctxas the first parameter and checkctx.Done()in loops and blocking selects. - Use
WithValuesparingly, only for request-scoped metadata such as trace IDs, never for optional parameters. - Never store a Context inside a struct; pass it explicitly through calls.
Common bugs are ignoring cancellation so work continues after a client disconnects, and misusing values as a hidden dependency injection channel.
Candidate Response Strategy & Interview Tips
- Start with a concise one-sentence summary: Deliver a direct, confident answer first before expanding into nuances.
- Demonstrate real-world trade-offs: Discuss where this approach excels and when you would avoid it in production systems.
- Discuss complexity & edge cases: Proactively explain time/space complexity or boundary conditions (null values, scale limits).
- Prepare for interviewer follow-ups: Technical hiring panels frequently probe deeper into concurrency, backward compatibility, or alternative libraries.