有没有办法将[]字节切换转换为io.Reader?

bet*_*or5 3 io byte go


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

fab*_*ioM 10

是的: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)
}
Run Code Online (Sandbox Code Playgroud)

  • `bytes.NewReader` (3认同)
  • 与 `bytes.NewReader` 有什么不同? (2认同)
  • @FredHors我知道已经有一段时间了,但我对此也很好奇,所以我查看了源代码。[摘自源代码中的注释](https://github.com/golang/go/blob/master/src/bytes/reader.go#L16) `// 与 Buffer 不同,Reader 是只读的并支持寻求。我想问题应该是“你的用例是什么?” (2认同)

Eur*_*fer 6

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

in := bytes.NewReader(b []byte)
Run Code Online (Sandbox Code Playgroud)

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