Golang : Convert(cast) bytes.Buffer or bytes.NewBuffer type to io.Reader
Problem :
You need to convert or type cast bytes.Buffer
or bytes.NewBuffer
type to io.Reader
to use in io.MultiReader()
function because of this error :
cannot use buffer_slice (type []*bytes.Buffer) as type io.Reader in argument to io.MultiReader: []*bytes.Buffer does not implement io.Reader (missing Read method).
Solution :
Wrap the bytes.Buffer
with io.Reader array
. For example :
package main
import (
"bytes"
"fmt"
"io"
"io/ioutil"
)
func main() {
readerBuffer := bytes.NewBuffer([]byte("abcdefghijkl"))
readerBuffer2 := bytes.NewBuffer([]byte("mnopqrstuvwxyz"))
buff := []io.Reader{readerBuffer, readerBuffer2} // <------ here
combined := io.MultiReader(buff...)
data, _ := ioutil.ReadAll(combined)
fmt.Println(string(data))
}
or
package main
import (
"bytes"
"fmt"
"io"
"io/ioutil"
)
func main() {
//readerBuffer := bytes.NewBuffer([]byte("abcdefghijkl"))
readerBuffer := &bytes.Buffer{}
readerBuffer.Write([]byte("abcdefghijkl"))
//readerBuffer2 := bytes.NewBuffer([]byte("mnopqrstuvwxyz"))
readerBuffer2 := &bytes.Buffer{}
readerBuffer2.Write([]byte("mnopqrstuvwxyz"))
buff := []io.Reader{readerBuffer, readerBuffer2} // <------ here
combined := io.MultiReader(buff...)
data, _ := ioutil.ReadAll(combined)
fmt.Println(string(data))
}
Reference :
https://socketloop.com/references/golang-io-multireader-function-example
See also : Golang : Convert(cast) []byte to io.Reader type
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+7.6k Android Studio : Indicate progression with ProgressBar example
+10.8k Golang : Save webcamera frames to video file
+17.2k Golang : Generate thumbnails from images
+6.6k Golang : Generate human readable password
+7.3k Python : Fix SyntaxError: Non-ASCII character in file, but no encoding declared
+23.6k Golang : Get current file path of a file or executable
+24.8k Golang : Convert(cast) string to uint8 type and back to string
+8.4k Golang : How to protect your source code from client, hosting company or hacker?
+6.4k Golang : Example of how to detect which type of script a word belongs to
+10.8k Golang : Simple client-server HMAC authentication without SSL example
+4.9k Golang : Launching your executable inside a console under Linux
+7.1k Golang : Auto-generate reply email with text/template package