Skip to content

Instantly share code, notes, and snippets.

@ostretsov
Created July 22, 2023 03:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ostretsov/613aaf6b55f1a7caa4e387c7699315ac to your computer and use it in GitHub Desktop.
Save ostretsov/613aaf6b55f1a7caa4e387c7699315ac to your computer and use it in GitHub Desktop.
package main
import (
"context"
"fmt"
)
func Example_childCancelsParent() {
parentCtx, cancelParentCtx := context.WithCancel(context.Background())
interimValCtx := context.WithValue(parentCtx, "foo", "bar")
childCtx, cancelChildCtx := context.WithCancel(interimValCtx)
defer cancelChildCtx()
defer cancelParentCtx()
cancelChildCtx()
fmt.Println("parent:", parentCtx.Err())
fmt.Println("interim:", interimValCtx.Err())
fmt.Println("child:", childCtx.Err())
// Output:
// parent: <nil>
// interim: <nil>
// child: context canceled
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment