github.com/wI2L/jettison@v0.7.4/buffer.go (about) 1 package jettison 2 3 import "sync" 4 5 const defaultBufCap = 4096 6 7 var bufferPool sync.Pool // *buffer 8 9 type buffer struct{ B []byte } 10 11 // Reset resets the buffer to be empty. 12 func (b *buffer) Reset() { b.B = b.B[:0] } 13 14 // cachedBuffer returns an empty buffer 15 // from a pool, or initialize a new one 16 // with a default capacity. 17 func cachedBuffer() *buffer { 18 v := bufferPool.Get() 19 if v != nil { 20 buf := v.(*buffer) 21 buf.Reset() 22 return buf 23 } 24 return &buffer{ 25 B: make([]byte, 0, defaultBufCap), 26 } 27 }