http.Handle
和 http.HandleFunc
的区别?
http.Handle
:func Handle(pattern string, handler http.Handler)
使用一个实现了http.Handler接口的处理器处理请求。
处理器类型必须实现ServeHTTP方法,即具有方法签名ServeHTTP(http.ResponseWriter, *http.Request)
。
pattern是用于匹配URL路径的模式。
示例代码:
type MyHandler struct{} func (h MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { // 处理HTTP请求的逻辑 fmt.Fprint(w, "Hello, World!") } func main() { myHandler := MyHandler{} http.Handle("/", myHandler) http.ListenAndServe(":8080", nil) }
在上面的示例中,我们定义了一个自定义的处理器类型MyHandler
,它实现了ServeHTTP
方法来处理HTTP请求。然后,我们使用http.Handle
函数将处理器和URL路径模式"/"进行绑定。
http.HandleFunc
:func HandleFunc(pattern string, handler func(http.ResponseWriter, *http.Request))
使用一个函数来处理请求,该函数接受http.ResponseWriter和*http.Request作为参数。
pattern是用于匹配URL路径的模式。
示例代码:
func helloHandler(w http.ResponseWriter, r *http.Request) { // 处理HTTP请求的逻辑 fmt.Fprint(w, "Hello, World!") } func main() { http.HandleFunc("/", helloHandler) http.ListenAndServe(":8080", nil) }
在上面的示例中,我们定义了一个名为helloHandler
的函数来处理HTTP请求。然后,我们使用http.HandleFunc
函数将该函数和URL路径模式"/"进行绑定。