123456789101112131415161718192021222324252627282930313233343536 |
- package proxy
- import "sync"
- var (
- byteSlicePool = sync.Pool{
- New: func() interface{} {
- return []byte{}
- },
- }
- byteSliceChan = make(chan []byte, 10)
- )
- func ByteSliceGet(length int) (data []byte) {
- select {
- case data = <-byteSliceChan:
- default:
- data = byteSlicePool.Get().([]byte)[:0]
- }
- if cap(data) < length {
- data = make([]byte, length)
- } else {
- data = data[:length]
- }
- return data
- }
- func ByteSlicePut(data []byte) {
- select {
- case byteSliceChan <- data:
- default:
- byteSlicePool.Put(data) //nolint:staticcheck
- }
- }
|