net/http包中handle().handlefunc()是什么区别?

keke · · 11321 次点击
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
更多评论
polaris
社区,需要你我一同完善!
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
还不是很明白,handle()怎么用,能否给个例子?实现handlefun("/hello",hello)的功能
#2