title: Different result when run io.Copy(os.Stdout, &r) consecutively in Golang
body: <p>I am playing around Golang. About io.Copy
  I put 2 consecutive io.Copy in the code, but i expect it output twice result(testtesttest). But the 2nd one is nil. Can anyone help explain why? tks</p>
  
  <pre><code>package main
  
  import (
      "io"
      "os"
      "strings"
      "fmt"
  
  )
  
  type testReader struct {
      w io.Reader
      str string
  
  }
  
  
  func (tt *testReader) Read (b []byte) (n int, err error) {
  
  
      io.Copy(os.Stdout, tt.w)
       n, err = tt.w.Read(b)
       if tt.w !=nil {
          return 0,io.EOF
        }
      return
  }
  
  func main() {
      s := strings.NewReader("testtesttest!!!")
      r := testReader{s,"ttthhh"}
      fmt.Println(&amp;r)
      io.Copy(os.Stdout, &amp;r)
  //  s.Seek(0,0)   // solution from Poy's answer
      io.Copy(os.Stdout, &amp;r)
  
  }
  </code></pre>