func HandleFunc(pattern string, handler func(ResponseWriter, *Request))
这个是模式匹配,对应处理函数。
func Handle(pattern string, handler Handler)
这个是干嘛用的呢?
package main
import (
"fmt"
"net/http"
)
type AppHandler struct {
appName string
}
func(index *AppHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "hello, %s!", index.appName)
}
func main() {
index := new(AppHandler)
index.appName = "sample app"
http.Handle("/", index)
http.ListenAndServe(":8080", nil)
}
#4
更多评论
Handler是一个接口。
而HandleFunc和Handle都是调用DefaultServeMux对应的方法,而DefaultServeMux是ServeMux的实例,ServeMux实现了Handler接口。事实上,HandleFunc最终还是会调用Handle方法。代码如下:
func (mux *ServeMux) HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
mux.Handle(pattern, HandlerFunc(handler))
}
明白了吧?
大部分时候用HandleFunc()即可,方便(因为接收func函数);而如果想自己实现Handler接口,则可以使用Handle()
#1