It should be r = r.WithContext(context.WithValue(r.Context(), key, &s))
Using the address of a key was a typo. On Tuesday, December 22, 2020 at 12:17:01 AM UTC+1 Uli Kunitz wrote: > I don't think this is a good idea. > > I would do something like this. > > type mykey struct{} > var key mykey > > r.Use(func(next http.Handler) http.Handler { > return http.HandlerFunc(func(w http.ResponseWriter, r > *http.Request) { > var s string > r = r.WithContext(context.WithValue(r.Context(), > &key, &s)) > next.ServeHTTP(w, r) > if s != "" { > fmt.Fprint("string %s\n", s) > } > }) > }) > > In the handler itself you must of course get the value by assuming that > key will always have string pointer. You can then assign a string to the > pointer, which will be output if its non-nil. Wonder whether you want to > store a map or a io.Writer as value instead of a single string. > On Monday, December 21, 2020 at 5:49:54 PM UTC+1 z.kar...@gmail.com wrote: > >> >> Hello, >> >> I'm wondering if it is ok to do this ? >> >> //// >> package main >> >> import ( >> "context" >> "fmt" >> "log" >> "net/http" >> >> "github.com/gorilla/mux" >> ) >> >> func main() { >> addr := "127.0.0.1:8080" >> r := mux.NewRouter() >> >> r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { >> newReq := r.WithContext(context.WithValue(r.Context(), 0, >> "bla")) >> *r = *newReq >> // set context >> }) >> >> r.Use(func(next http.Handler) http.Handler { >> return http.HandlerFunc(func(w http.ResponseWriter, r >> *http.Request) { >> next.ServeHTTP(w, r) >> >> ctx := r.Context() >> v, ok := ctx.Value(0).(string) >> if !ok { >> fmt.Println("could not find context >> value") >> } else { >> fmt.Println(v) >> } >> }) >> }) >> >> s := &http.Server{ >> Addr: addr, >> Handler: r, >> } >> >> if err := s.ListenAndServe(); err != nil && err != >> http.ErrServerClosed { >> log.Fatalf("could not listen on %s : %v", addr, err) >> } >> } >> //// >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/2b5e0090-2f8d-4143-b62f-fb25f6640be8n%40googlegroups.com.