Go:在一个函数中接受不同的套接字调用

我试图让我的 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

我该如何实施?


森林海
浏览 196回答 1
1回答

千万里不及你

如“编写 Web 应用程序”一文中所示,HandleFunc 的示例为:package mainimport (    "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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go