【发布时间】:2020-04-06 12:41:08
【问题描述】:
在 response.go 的源代码的定义中,定义了 io.ReadCloser 类型的 Body,但是在通过以下代码打印 Body 的类型时,它会打印 *http.http2gzipReader。都是一样的吗?
package main
import (
"fmt"
"net/http"
)
func main() {
//any url
url := "https://www.goal.com/en-in"
res, _ := http.Get(url)
body := res.Body
fmt.Printf("tpye is %T", body)
}
【问题讨论】:
-
“它们都一样吗?”不,它们不是,但是
*http.http2gzipReader实现了io.ReadCloser并且因此可以这样使用。 -
有关接口的更多信息,请参见 tour.golang.org/methods/9 和 golang.org/ref/spec#Interface_types。
-
@mkopriva 为什么 response.Body 类型是 *http.http2gzipReader 而不是 io.ReadCloser?可以分享一些资源吗?
-
它被声明为接口类型,因此可以使用多个具体实现。
标签: http go glide-golang