(PCC)::[How-to-perform-Context-operations-in-go-language]::[go]
package main import ( "fmt" "net/http" "time" ) func hello(w http.ResponseWriter, req *http.Request) { ctx := req.Context() fmt.Println("server: hello handler started") defer fmt.Println("server: hello handler ended") select { case <-time.After(10 * time.Second): fmt.Fprintf(w, "hello\n") case <-ctx.Done(): err := ctx.Err() fmt.Println("server:", err) internalError := http.StatusInternalServerError http.Error(w, err.Error(), internalError) } } func main() { http.HandleFunc("/hello", hello) http.ListenAndServe(":8090", nil) }