[英]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.