将字节片转换为io。读者

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

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.Reader的响应体,我该如何转换?我试过这个新的阅读器/打字机,但不成功。

192924 次浏览

要从[]byte片获取实现io.Reader的类型,可以在bytes包中使用bytes.NewReader:

r := bytes.NewReader(byteData)

这将返回一个类型为bytes.Reader的值,该值实现了io.Reader(和io.ReadSeeker)接口。

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