package putsvc import ( "sync" ) const ( defaultAllocSize = 1024 poolSliceMaxSize = 128 * 1024 ) type payload struct { Data []byte } var putBytesPool = &sync.Pool{ New: func() any { return &payload{Data: make([]byte, 0, defaultAllocSize)} }, } func getPayload() *payload { return putBytesPool.Get().(*payload) } func putPayload(p *payload) { if cap(p.Data) > poolSliceMaxSize { return } p.Data = p.Data[:0] putBytesPool.Put(p) }