这段Go语言代码为什么不报错?

gogogolang · · 1015 次点击
90design
狗狼都是神
``` f := func(w http.ResponseWriter, r *http.Request) { fmt.Println("Executing middleware before request phase!") // Pass control back to the handler //handler.ServeHTTP(w, r) fmt.Println("Executing middleware after response phase!") } type HF http.HandlerFunc return HF ( f ) ```
#3
更多评论
polaris
社区,需要你我一同完善!
这里并不是函数调用,而是类型转换。 `type HandlerFunc func(ResponseWriter, *Request)` 表明 HandlerFunc 是一个类型。 这里的匿名函数符合这个类型,转强制类型转换。 而 HandlerFunc 实现了 http.Handler 接口,所以,可以直接返回该类型。
#1
楼上说的是对的。你可以转换一下思维,比如把 http.HandlerFunc 看成 int,把 func(w ,r) 看成一个变量 a,实际上这就是个强制类型转换。
#2