type errorReader … func (r errorReader) Read(p []byte) (n int, err error) { … } func (r errorReader) ReadAt(p []byte, off int64) (n int, err error) { … } func (r errorReader) Seek(offset int64, whence int) (int64, error) { … } func (r errorReader) Close() error { … } type readSeekerFromReader … func (r *readSeekerFromReader) start() { … } func (r *readSeekerFromReader) Read(p []byte) (n int, err error) { … } func (r *readSeekerFromReader) Seek(offset int64, whence int) (int64, error) { … }