回答

收藏

将 byte slice转换为 io.Reader

技术问答 技术问答 259 人阅读 | 0 人回复 | 2023-09-12

在我的项目中,我有一个来自请求回应的人[byte slice。3 r& l0 e0 E" W" l3 D3 q6 l
    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}' o& ~* a* t3 d4 g! n) b
这是有效的,但如果我想得到回应的文本io.Reader,如何转换?我试过 newreader/writer 但没有成功。; q, o/ z/ r9 k% N6 |. [0 t% v
                                                               
( K4 t, ^8 I2 }" j8 h2 Q    解决方案:                                                               
! j; F* y% c2 A' X* G2 Z                                                                要获取io.Reader从[]byte你可以实现切片的类型bytes.NewReader在bytes包中使用:. [( k" I: M7 O" ~! ]% ^. N* u- |
    r := bytes.NewReader(byteData)
    4 Q! D. s4 C" U& ?
这将返回一个bytes.Reader实现io.Reader(和io.ReadSeeker)接口类型值。# f' M9 e" P7 O' u* V
不要担心它们不是同一种类型。io.Reader它是一个可以由许多不同类型实现的接口。Go请阅读 中接口的更多信息Effective Go:接口和类型。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则