这是一个创建于 2004 天前的主题,其中的信息可能已经有所发展或是发生改变。
```
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 接口,局部变量就没有?
|
|
1
fork 2019-07-07 11:24:58 +08:00 1
new 创建的是指针类型*bytes.Buffer, 只有指针类型实现了 io.Writer 接口
|
|
|
2
xdeng 2019-07-08 09:31:56 +08:00
@ fork 3Q。我试过 var buf bytes.Buffer w := zip.NewWriter(&buf) defer w.Close() 这样就没问题了。
|