package main import ( "net/http" "github.com/julienschmidt/httprouter" ) func test(w http.ResponseWriter, r *http.Request){ // you code... } type middleWareHandler struct { r *httprouter.Router } func NewMiddleWareHandler(r *httprouter.Router, cc int) http.Handler { m := middleWareHandler{} m.r = r return m } func RegisterHandles() *httprouter.Router { router := httprouter.New() router.GET("/test", test) return router } // 中间件 func (m middleWareHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { // test()执行之前 // you code m.r.ServeHTTP(w, r) //页面被关闭,或handler函数执行完毕,该函数才会执行完 // test()执行之后 // you code } func main() { r := RegisterHandles() mh := NewMiddleWareHandler(r) http.ListenAndServe(":9000", mh) }