How to Set a Timeout with time.After and context

Use context.WithTimeout and time.After together to enforce a deadline on Go operations.

Combine time.After with context.WithTimeout to create a cancellable operation that stops after a set duration.

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

select {
case <-time.After(10 * time.Second):
    fmt.Println("Timed out")
case <-ctx.Done():
    fmt.Println("Context cancelled")
}

This pattern ensures the operation respects the timeout defined in the context while time.After provides a fallback timer.