1234567891011121314151617181920212223242526272829303132333435 |
- package main
- import "io"
- type SizableZeroReader struct {
- sz int
- }
- func NewSizableZeroReader(sz int) *SizableZeroReader {
- r := &SizableZeroReader{sz: sz}
- return r
- }
- func (s *SizableZeroReader) Read(p []byte) (n int, err error) {
- l := len(p)
- var al int
- if s.sz > l {
- al = l
- s.sz = s.sz - l
- } else {
- al = s.sz
- s.sz = 0
- }
- for i := 0; i < al; i++ {
- p[i] = 0
- }
- if al < l {
- return al, io.EOF
- }
- return al, nil
- }
- func (s *SizableZeroReader) Close() error {
- return nil
- }
|