How do I add deadlines and cancellation in Go?

In Go, context is an essential part of managing deadlines and cancellation of goroutines. The `context` package in Go provides the ability to create derived contexts with deadlines, cancellation signals, and other request-scoped values. Here’s how you can implement deadlines and cancellation using the `Context` type.

To create a context with a deadline, you can use the `context.WithDeadline` or `context.WithTimeout` functions. The following example demonstrates how to use these functions effectively.

package main import ( "context" "fmt" "time" ) func main() { // Set a timeout of 3 seconds ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) defer cancel() // Ensures that the resources are cleaned up // Simulate a long-running process select { case <-time.After(2 * time.Second): fmt.Println("Process completed successfully.") case <-ctx.Done(): fmt.Println("Error:", ctx.Err()) } }

Go context cancellation deadlines goroutines