-1

私はこのユーティリティを持っています:

type Handler struct{}

func (h Handler) Mount(router *mux.Router, v PeopleInjection) {
    router.HandleFunc("/api/v1/people", h.makeGetMany(v)).Methods("GET")
}

上記はこれを呼び出します:

func (h Handler) makeGetMany(v PeopleInjection) http.HandlerFunc {

    type RespBody struct {}

    type ReqBody struct {
        Handle string
    }

    return tc.ExtractType(
        tc.TypeList{ReqBody{},RespBody{}},
        func(w http.ResponseWriter, r *http.Request) {
         // ...
    })
}

そして次tc.ExtractTypeのようになります:

func ExtractType(s TypeList, h http.HandlerFunc) http.HandlerFunc {

    return func(w http.ResponseWriter, r *http.Request) {

        h.ServeHTTP(w, r)  // <<< h is just a func right? so where does ServeHTTP come from?
    }
}

私の質問は - serveHTTP メソッド/関数はどこから来たのですか??

hパラメータは、このシグネチャを持つ関数だけではありません:

func(w http.ResponseWriter, r *http.Request) { ... }

では、その関数にはどのように関数がServeHTTP接続されているのでしょうか?

言い換えれば、なぜ私は電話しているのですか

h.ServeHTTP(w,r)

それ以外の

h(w,r)

?

4

1 に答える 1