simple_byte_reader.go 678 B

1234567891011121314151617181920212223242526272829
  1. package zmostp_go
  2. import "io"
  3. var _ io.ByteReader = (*SimpleByteReader)(nil)
  4. // SimpleByteReader implements io.ByteReader for io.Reader.
  5. // Not recommended for production use due to performance issues.
  6. type SimpleByteReader struct {
  7. reader io.Reader
  8. buf []byte
  9. }
  10. // NewSimpleByteReader creates a new SimpleByteReader.
  11. // Not recommended for production use due to performance issues.
  12. func NewSimpleByteReader(reader io.Reader) *SimpleByteReader {
  13. return &SimpleByteReader{
  14. reader: reader,
  15. buf: make([]byte, 1),
  16. }
  17. }
  18. func (s SimpleByteReader) ReadByte() (byte, error) {
  19. _, err := s.reader.Read(s.buf)
  20. if err != nil {
  21. return 0, err
  22. }
  23. return s.buf[0], nil
  24. }