package global import ( "bytes" "sync" ) var bufferPool = sync.Pool{ New: func() interface{} { return new(bytes.Buffer) }, } // NewBuffer 从池中获取新 bytes.Buffer func NewBuffer() *bytes.Buffer { return bufferPool.Get().(*bytes.Buffer) } // PutBuffer 将 Buffer放入池中 func PutBuffer(buf *bytes.Buffer) { // See https://golang.org/issue/23199 const maxSize = 1 << 16 if buf != nil && buf.Cap() < maxSize { // 对于大Buffer直接丢弃 buf.Reset() bufferPool.Put(buf) } }