How do I unregister a Handler in net/http?
===

I am writing a web server wherein I need to register handlers at runtime. E.g. "/create" would create a new handler for all URLs like "/123/\*" and so on. I need a corresponding "/destroy/123" which would unregister the handler for "/123/\*".

Here's the code for handling "/create"

    package main
    import (
        "fmt"
        "net/http"
    )
    
    type MyHandler struct {
        id int
    }
    func (hf *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintln(w, r.URL.Path)
    }
    
    // Creates MyHandler instances and registers them as handlers at runtime
    type HandlerFactory struct {
        handler_id int
    }
    func (hf *HandlerFactory) ServeHTTP(w http.ResponseWriter, r *http.Request) {
        hf.handler_id++
        handler := MyHandler{hf.handler_id}
        handle := fmt.Sprintf("/%d/", hf.handler_id)
        http.Handle(handle, &handler)
    }
    
    func main() {
        factory := HandlerFactory{0}
        http.Handle("/create", &factory)
        http.ListenAndServe("localhost:8080", nil)
    }

I tried implementing my own multiplexer by embedding `http.ServeMux` but it holds its pattern-to-Handler mapping in a private variable (`ServeMux.m`)