V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
xdeng
V2EX  ›  Go 编程语言

问一个关于 bytes.Buffer 的问题

  •  
  •   xdeng · 2019-07-05 17:37:42 +08:00 · 2033 次点击
    这是一个创建于 1758 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ```
    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 接口,局部变量就没有?
    fork
        1
    fork  
       2019-07-07 11:24:58 +08:00   ❤️ 1
    new 创建的是指针类型*bytes.Buffer, 只有指针类型实现了 io.Writer 接口
    xdeng
        2
    xdeng  
    OP
       2019-07-08 09:31:56 +08:00
    @fork 3Q。我试过
    var buf bytes.Buffer
    w := zip.NewWriter(&buf)
    defer w.Close()
    这样就没问题了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1470 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:06 · PVG 01:06 · LAX 10:06 · JFK 13:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.