我试图让我的 Web 服务器在一个函数中接受不同的套接字调用。我的代码如下所示:去:func handler(w io.Writer, r *io.ReadCloser) { //do something}func main() { http.HandleFunc("/", handler) http.ListenAndServe(":3000", nil)}我收到错误:cannot use handler (type func(io.Writer, *io.ReadCloser)) as type func(http.ResponseWriter, *http.Request) in argument to http.HandleFunc我该如何实施?
1 回答
千万里不及你
TA贡献1784条经验 获得超9个赞
如“编写 Web 应用程序”一文中所示,HandleFunc 的示例为:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
你不能取代r *http.Request通过r *io.ReadCloser。
您需要在包装器中委托该调用,如该线程中所建议的:
func wrappingHandler(w http.ResponseWriter, r *http.Request){
handler(w, r.Body)
}
func main() {
http.HandleFunc("/", wrappingHandler)
http.ListenAndServe(":8080", nil)
}
或者简单地修改您的处理程序:
func handler(w http.ResponseWriter, r *http.Request) {
rb := r.Body
//do something with rb instead of r
}
- 1 回答
- 0 关注
- 195 浏览
添加回答
举报
0/150
提交
取消