为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
森林海 2021-08-23 17:36:15
我试图让我的 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

}


查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信