我试图让一些 Go 对象实现 io.Writer,但写入字符串而不是文件或类似文件的对象。我认为bytes.Buffer会起作用,因为它实现了Write(p []byte). 但是,当我尝试这样做时:
bytes.Buffer
Write(p []byte)
import "bufio" import "bytes" func main() { var b bytes.Buffer foo := bufio.NewWriter(b) }
我收到以下错误:
cannot use b (type bytes.Buffer) as type io.Writer in function argument: bytes.Buffer does not implement io.Writer (Write method has pointer receiver)
我很困惑,因为它清楚地实现了接口。如何解决此错误?
传递一个指向缓冲区的指针,而不是缓冲区本身:
import "bufio" import "bytes" func main() { var b bytes.Buffer foo := bufio.NewWriter(&b) }