【问题标题】:*http.http2gzipReader vs io.ReadCloser Golang*http.http2gzipReader 与 io.ReadCloser Golang
【发布时间】: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/9golang.org/ref/spec#Interface_types
  • @mkopriva 为什么 response.Body 类型是 *http.http2gzipReader 而不是 io.ReadCloser?可以分享一些资源吗?
  • 它被声明为接口类型,因此可以使用多个具体实现。

标签: http go glide-golang


【解决方案1】:

不,它们不一样。

io.ReadCloser 接口是请求主体的类型,但*http.http2gzipReader 是分配给接口的具体类型。也就是我们所说的,*http.http2gzipReader 实现了io.ReadCloser 接口。

【讨论】:

    猜你喜欢
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 2019-02-04
    • 2016-04-23
    • 2018-11-15
    相关资源
    最近更新 更多