问一个关于 bytes.Buffer 的问题

2019-07-05 17:37:42 +08:00
 xdeng
```
buf := new(bytes.Buffer)
w := zip.NewWriter(buf)
defer w.Close()
```
这样没问题
```
var buf bytes.Buffer
w := zip.NewWriter(buf)
defer w.Close()
```
这样就报
cannot use buf (type bytes.Buffer) as type io.Writer in argument to zip.NewWriter:
bytes.Buffer does not implement io.Writer (Write method has pointer receiver)
想问的是为什么 new 出来的就有 io.Writer 接口,局部变量就没有?
2132 次点击
所在节点    Go 编程语言
2 条回复
fork
2019-07-07 11:24:58 +08:00
new 创建的是指针类型*bytes.Buffer, 只有指针类型实现了 io.Writer 接口
xdeng
2019-07-08 09:31:56 +08:00
@fork 3Q。我试过
var buf bytes.Buffer
w := zip.NewWriter(&buf)
defer w.Close()
这样就没问题了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/580402

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX