github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/xstring/buffer.go (about) 1 package xstring 2 3 import ( 4 "bytes" 5 "fmt" 6 "sync" 7 ) 8 9 type buffer struct { 10 bytes.Buffer 11 } 12 13 var buffersPool = sync.Pool{New: func() interface{} { 14 return &buffer{} 15 }} 16 17 func (b *buffer) Free() { 18 b.Reset() 19 buffersPool.Put(b) 20 } 21 22 func Buffer() *buffer { 23 val, ok := buffersPool.Get().(*buffer) 24 if !ok { 25 panic(fmt.Sprintf("unsupported type conversion from %T to *buffer", val)) 26 } 27 28 return val 29 }