package slicewriter import "io" type SliceWriter struct { off int buf []byte } func (w *SliceWriter) Write(p []byte) (int, error) { if len(p)+w.off <= len(w.buf) { copy(w.buf[w.off:], p) w.off += len(p) return len(p), nil } space := len(w.buf) - w.off copy(w.buf[:w.off], p[:space]) w.off += space return space, io.ErrShortWrite } func (w *SliceWriter) Reset() { w.off = 0 } func (w *SliceWriter) Bytes() []byte { return w.buf[:w.off] } func NewSliceWriter(b []byte) *SliceWriter { return &SliceWriter{ off: 0, buf: b, } }