ServeHTTP方法从哪里来

这让我在学习 Go 的最后一个月感到困惑:


func Auth(next http.HandlerFunc) http.HandlerFunc {


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


        // ...

        next.ServeHTTP(w, r)

    }

}

在这里我们可以看到 Auth func 返回 type http.HandlerFunc。那个类型只是一个函数。那么当您调用时next.ServeHTTP,该方法是在何时/何处定义的?


慕斯709654
浏览 118回答 1
1回答

慕虎7371278

// The HandlerFunc type is an adapter to allow the use of// ordinary functions as HTTP handlers. If f is a function// with the appropriate signature, HandlerFunc(f) is a// Handler that calls f.type HandlerFunc func(ResponseWriter, *Request)// ServeHTTP calls f(w, r).func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) {    f(w, r)}从字面上看,任何具有签名的函数都func(ResponseWriter, *Request)可以转换为 a HandlerFunc,这为它提供了方法ServeHTTP——然后简单地调用该函数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go