簡體   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