亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號