【问题标题】:Is there a way in go to convert a []byte slice to an io.Reader? [duplicate]有没有办法将 []byte 切片转换为 io.Reader? [复制]
【发布时间】:2014-08-26 01:37:16
【问题描述】:


我刚开始使用 go 并且想知道是否可以将 []byte 切片转换为 io.Reader。如 ioutil.ReadAll 所示,其他方式是可能的。
如果不是,是否可以使用 code.google.com/p/go.net/html.Tokenizer 以某种方式与字节切片?

【问题讨论】:

    标签: io go byte


    【解决方案1】:

    是的:bytes.NewBuffer

    io.Reader 示例:

    http://play.golang.org/p/P0VbE8UFpC

    package main
    
    import (
        "bytes"
        "encoding/base64"
        "io"
        "os"
    )
    
    func main() {
        // A Buffer can turn a string or a []byte into an io.Reader.
        buf := bytes.NewBuffer([]byte("R29waGVycyBydWxlIQ=="))
        dec := base64.NewDecoder(base64.StdEncoding, buf)
        io.Copy(os.Stdout, dec)
    }
    

    【讨论】:

    • bytes.NewReader有什么不同?
    • @FredHors 我知道已经有一段时间了,但我也很好奇,所以我查看了源代码。 Taken from a comment in the source code// Unlike a Buffer, a Reader is read-only and supports seeking.。我想问题应该是“你的用例是什么?”
    【解决方案2】:

    您可以使用字节包中的NewReader:

    in := bytes.NewReader(b []byte)
    

    https://golang.org/pkg/bytes/#NewReader

    【讨论】:

    • bytes.NewBuffer有什么不同?
    • (也放在这里)我知道已经有一段时间了,但我也很好奇,所以我查看了源代码。 Taken from a comment in the source code // 与 Buffer 不同,Reader 是只读的并且支持搜索。我想问题应该是“你的用例是什么?”
    猜你喜欢
    • 1970-01-01
    • 2022-01-19
    • 2020-09-12
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多