Context — carries deadlines, cancellation, and request-scoped values.
Key features:
1// Create context with timeout2ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)3defer cancel()45// Use in HTTP request6req, _ := http.NewRequestWithContext(ctx, "GET", "https://api.example.com", nil)
Cancellation:
1ctx, cancel := context.WithCancel(context.Background())23go func() {4 for {5 select {6 case <-ctx.Done():7 fmt.Println("Cancelled")8 return9 default:10 // Do work11 }12 }13}()1415cancel() // Cancel the context
Best practices: