Go语言 将字节片转换为io,阅读器

um6iljoc  于 2023-05-27  发布在  Go
关注(0)|答案(2)|浏览(180)

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

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的响应体,我该如何转换?我尝试了newreader/writer,但没有成功。

pcrecxhr

pcrecxhr1#

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

r := bytes.NewReader(byteData)

这将返回一个bytes.Reader类型的值,它实现了io.Reader(和io.ReadSeeker)接口。
不要担心他们不是同一个“类型”。io.Reader是一个接口,可以通过许多不同的类型来实现。要了解更多关于Go中的接口,请阅读Effective Go:接口和类型。

j8ag8udp

j8ag8udp2#

创建缓冲区也可以:

r := bytes.NewBuffer(byteData)

相关问题