code: func (v *View) Read(p []byte) (n int, err error) {
  	if v.readOffset == 0 {
  		v.readCache = v.Buffer()
  	}
  	if v.readOffset < len(v.readCache) {
  		n = copy(p, v.readCache[v.readOffset:])
  		v.readOffset += n
  	} else {
  		err = io.EOF
  	}
  	return
  }
docs: // Read reads data into p. It returns the number of bytes read into p.
  // At EOF, err will be io.EOF. Calling Read() after Rewind() makes the
  // cache to be refreshed with the contents of the view.