package core import "sync" const ( DefaultBufferSize = 1024 MaxBufferSize = 64 * 1024 ) var bytesPool = sync.Pool{ New: func () any { b := make([]byte, DefaultBufferSize) return &b }, } func GetBuffer(size int) []byte { bufPtr := bytesPool.Get().(*[]byte) buf := *bufPtr if size > cap(buf) { buf = make([]byte, size) } return buf[:size] } func PutBuffer(buf []byte) { if cap(buf) < MaxBufferSize{ // reset buf = buf[:0] bytesPool.Put(&buf) } }