在我的项目中,我有一个来自请求响应的字节片。

defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
    log.Println("StatusCode为" + strconv.Itoa(resp.StatusCode))
    return
}

respByte, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println("fail to read response data")
    return
}

这是可行的,但如果我想获得io的响应体。读者,我该如何转换?我试过这个新的阅读器/打字机,但不成功。


获取实现io的类型。读取器从一个[]字节切片,可以使用字节。字节包中的NewReader:

r := bytes.NewReader(byteData)

这将返回bytes类型的值。读取器,实现io。Reader(和io.ReadSeeker)界面。

不要担心他们不是同一“类型”。io。Reader是一个接口,可以由许多不同类型实现。要了解更多关于Go中的接口的知识,请阅读《有效的Go:接口和类型》。