title: Having trouble with gzip.Reader in Golang
body: <p>Why doesn't this work? (sorry for some reason I cannot get a share button on Go Playground).</p>
  
  <pre><code>package main
  
  import (
      "bytes"
      "compress/gzip"
      "fmt"
      "io"
  )
  
  func main() {
      // ENCODE
      data := []byte{1, 2, 3, 4, 5, 6, 7}
      bb0 := bytes.NewBuffer(data)
      byts := bb0.Bytes()
      fmt.Printf("data = % x\n", data)
      fmt.Printf("byte buffer bb0 contains = % x\n", byts)
      bb1 := new(bytes.Buffer)
      w := gzip.NewWriter(bb1)
      s1, err := w.Write(byts)
      fmt.Printf("%d bytes written using gzip writer, err = %v\n", s1, err)
      byts = bb1.Bytes()
      fmt.Printf("byte buffer bb1 contains = % x\n", byts)
      // DECODE
      r, err := gzip.NewReader(bb1)
      bb2 := new(bytes.Buffer)
      s2, err := io.Copy(bb2, r)
      r.Close()
      fmt.Printf("%d bytes copied from gzip reader, err = %v\n", s2, err)
      byts = bb2.Bytes()
      fmt.Printf("byte buffer bb2 contains = % x\n", byts)
  }
  </code></pre>
  
  <p>The output I get</p>
  
  <pre><code>data = 01 02 03 04 05 06 07
  byte buffer bb0 contains = 01 02 03 04 05 06 07
  7 bytes written using gzip writer, err = &lt;nil&gt;
  byte buffer bb1 contains = 1f 8b 08 00 00 09 6e 88 00 ff
  0 bytes copied from gzip reader, err = unexpected EOF
  byte buffer bb2 contains = 
  </code></pre>
  
  <p>The reader doesn't seem to be doing anything, what am I doing wrong?</p>