Golang : Fix cannot use buffer (type bytes.Buffer) as type io.Writer(Write method has pointer receiver) error
Problem :
You created a variable of type bytes.Buffer and encounter this error message when you want to use the variable with bufio.NewWriter() function.
cannot use buffer (type bytes.Buffer) as type io.Writer in argument to bufio.NewWriter: bytes.Buffer does not implement io.Writer (Write method has pointer receiver)
Solution :
From https://golang.org/pkg/bufio/#NewWriter, the NewWriter() will return a pointer *Writer . i.e this explains part the of the error message - Write method has pointer receiver.
To fix this error, you need to provide the memory address of the buffer. In this code example below, you will see that bytes.NewBuffer(nil) is the same as &bytes.Buffer{} and os.Stdout is ok because the underlaying is a pointer of *File type.
package main
import (
"bufio"
"fmt"
"os"
"bytes"
)
func main() {
// redirect to screen, not an issue because os.Stdout is a pointer
screenWriter := bufio.NewWriter(os.Stdout)
fmt.Fprint(screenWriter, "Hello world! 你好世界!\n")
screenWriter.Flush() // Don't forget to flush!
// redirect to buffer
//var buffer bytes.Buffer
//bufferWriter := bufio.NewWriter(buffer) // <--- not ok, will generate error message
//bufferWriter := bufio.NewWriter(&buffer) // <-- ok
buffer := bytes.NewBuffer(nil) // same as &bytes.Buffer{}, so it is ok as well.
bufferWriter := bufio.NewWriter(buffer)
bufferWriter.Flush() // Don't forget to flush!
}
References :
https://www.socketloop.com/references/golang-bufio-newwriter-function-example
See also : Golang : Reset buffer example
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
+9.5k Swift : Convert (cast) String to Integer
+7.3k Python : Fix SyntaxError: Non-ASCII character in file, but no encoding declared
+5.3k Apt-get to install and uninstall Golang
+12.1k Swift : Convert (cast) Int to String ?
+11.4k Golang : Get absolute path to binary for os.Exec function with exec.LookPath
+16.2k Golang : Parse date string and convert to dd-mm-yyyy format
+12.3k Golang : Verify token from Google Authenticator App
+40.2k Golang : Convert string to array/slice
+12.5k Golang : Human readable time elapsed format such as 5 days ago
+8.6k Golang : How to check if a website is served via HTTPS
+7.8k Golang : Heap sort example
+5.2k Golang : Create new color from command line parameters