Go:在http.Request中读取方法

时间:2016-02-19 08:42:33

标签: go

我正在阅读Sau Sheong Chang的 Go Web Programming 。以下是从请求正文中读取数据的示例代码:

import (
    "fmt"
    "net/http"
)

func bodyfunc(w http.ResponseWriter, r *http.Request) {
    len := r.ContentLength
    body := make([]byte, len)
    r.Body.Read(body)
    fmt.Fprintln(w, string(body))
}

func main() {
    server := http.Server{
        Addr: "127.0.0.1:8080",
    }
    http.HandleFunc("/body", bodyfunc)
    server.ListenAndServe()
}

根据定义,Body结构中的Request字段实际上是一个 io.ReadCloser界面。我的问题是:此接口中的Read方法刚刚声明但未实现。同时代码运行良好。必须在某处完成Read方法的实现。它在哪里?

1 个答案:

答案 0 :(得分:0)

实施在https://golang.org/src/net/http/transfer.go#L637。 我使用delve调试器来查找它。