Go的运行时库文档已过期?

Pau*_*mer 0 google-app-engine go

所以,我正在使用GO解析POST.我想要的是帖子的正文,所以我尝试以下(在此上下文中r是类型*http.Request):

var body io.Reader
var d []byte
body = r.Body.Reader
body.Read( d)
Run Code Online (Sandbox Code Playgroud)

但是,这会导致编译错误:

Compile error: <file>:44: 
    r.Body.Reader undefined (type io.ReadCloser has no field or method Reader)
Run Code Online (Sandbox Code Playgroud)

奇.我本可以发誓它是在文档中定义的......啊!在这里.

现在,我对Go来说相当新,但这有点奇怪 - 我搞砸了什么?

jdi*_*jdi 6

从您的链接,a的文档ReadCloser是:

type ReadCloser interface {
    Reader
    Closer
}
Run Code Online (Sandbox Code Playgroud)

这告诉你的是,ReadCloser接口由一个Reader和一个Closer功能组成.这两者都是.这意味着ReadCloser接受这些接口定义.它们实际上不是成员,也就是您访问它们的方式.

A Reader是:

type Reader interface {
    Read(p []byte) (n int, err error)
}
Run Code Online (Sandbox Code Playgroud)

这意味着你应该Read像这样访问:

body = r.Body
body.Read(d)
Run Code Online (Sandbox Code Playgroud)