How do I cancel long-running operations with context?

Go context cancellation, Go long-running operations, context package in Go, Go concurrency, Go context example
Learn how to use the context package in Go to cancel long-running operations effectively. This guide will cover examples and best practices for managing goroutines with timeouts and cancellation signals.
package main import ( "context" "fmt" "time" ) func longRunningOperation(ctx context.Context) { for { select { case <-ctx.Done(): fmt.Println("Operation canceled:", ctx.Err()) return default: // Simulate a task by sleeping time.Sleep(1 * time.Second) fmt.Println("Working...") } } } func main() { // Create a context with cancel ctx, cancel := context.WithCancel(context.Background()) // Start the long-running operation in a goroutine go longRunningOperation(ctx) // Let the operation run for 5 seconds time.Sleep(5 * time.Second) // Cancel the operation cancel() // Give some time for the cancellation to take effect time.Sleep(2 * time.Second) fmt.Println("Main function exiting") }

Go context cancellation Go long-running operations context package in Go Go concurrency Go context example