43 lines
570 B
Go
43 lines
570 B
Go
package myreader
|
|
|
|
import "bytes"
|
|
|
|
type Reader struct {
|
|
r *bytes.Reader
|
|
Err error
|
|
}
|
|
|
|
func NewReader(b []byte) *Reader {
|
|
return &Reader{r: bytes.NewReader(b)}
|
|
}
|
|
|
|
func (r *Reader) ReadByte() byte {
|
|
if r.Err != nil {
|
|
return 0
|
|
}
|
|
b, err := r.r.ReadByte()
|
|
r.Err = err
|
|
return b
|
|
}
|
|
|
|
func (r *Reader) Read(b []byte) (n int) {
|
|
if r.Err != nil {
|
|
return 0
|
|
}
|
|
n, r.Err = r.r.Read(b)
|
|
return n
|
|
}
|
|
|
|
func (r *Reader) ReadBytes(n int) []byte {
|
|
if r.Err != nil {
|
|
return nil
|
|
}
|
|
b := make([]byte, n)
|
|
r.Read(b)
|
|
return b
|
|
}
|
|
|
|
func (r *Reader) Len() int {
|
|
return r.r.Len()
|
|
}
|