繁体   English   中英

将字节切片转换为 io.Reader

[英]Convert byte slice to io.Reader

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

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 但没有成功。

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

r := bytes.NewReader(byteData)

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

不要担心它们不是同一个“类型”。 io.Reader是一个接口,可以通过多种不同的类型实现。 要详细了解 Go 中的接口,请阅读Effective Go:接口和类型

r := strings(byteData)

这也适用于将[]byte转换为io.Reader

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM