39 lines
520 B
Go
39 lines
520 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
|
||
|
}
|