// handler function func myHandler(ctx context.Context, req *http.Request) { // retrieve data from context param1 := ctx.Value("param1").(string) param2 := ctx.Value("param2").(int) // process request... } // middleware function func myMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { // set data in context ctx := context.WithValue(req.Context(), "param1", "some string value") ctx = context.WithValue(ctx, "param2", 123) // call next handler with updated context next.ServeHTTP(w, req.WithContext(ctx)) }) }In this example, the `myMiddleware` function sets request parameters in the Request Context before calling the next handler function. The `myHandler` function then retrieves these values from the context and processes the request accordingly. This code example belongs to the go-ipfs package library.