github.com/RevenueMonster/sqlike@v1.0.6/util/util.go (about)

     1  package util
     2  
     3  import (
     4  	"strings"
     5  	"sync"
     6  	"unsafe"
     7  )
     8  
     9  var (
    10  	strBldrPool = &sync.Pool{
    11  		New: func() interface{} {
    12  			return new(strings.Builder)
    13  		},
    14  	}
    15  )
    16  
    17  // AcquireString :
    18  func AcquireString() *strings.Builder {
    19  	return strBldrPool.Get().(*strings.Builder)
    20  }
    21  
    22  // ReleaseString :
    23  func ReleaseString(x *strings.Builder) {
    24  	if x != nil {
    25  		defer strBldrPool.Put(x)
    26  		x.Reset()
    27  	}
    28  }
    29  
    30  // UnsafeString :
    31  func UnsafeString(b []byte) string {
    32  	return *(*string)(unsafe.Pointer(&b))
    33  }