github.com/traefik/yaegi@v0.15.1/_test/assert2.go (about)

     1  package main
     2  
     3  import (
     4  	"strings"
     5  	"sync"
     6  )
     7  
     8  // Define an interface of stringBuilder that is compatible with
     9  // strings.Builder(go 1.10) and bytes.Buffer(< go 1.10).
    10  type stringBuilder interface {
    11  	WriteRune(r rune) (n int, err error)
    12  	WriteString(s string) (int, error)
    13  	Reset()
    14  	Grow(n int)
    15  	String() string
    16  }
    17  
    18  var builderPool = sync.Pool{New: func() interface{} {
    19  	return newStringBuilder()
    20  }}
    21  
    22  func newStringBuilder() stringBuilder {
    23  	return &strings.Builder{}
    24  }
    25  
    26  func main() {
    27  	i := builderPool.Get()
    28  	sb := i.(stringBuilder)
    29  	_, _ = sb.WriteString("hello")
    30  
    31  	println(sb.String())
    32  
    33  	builderPool.Put(i)
    34  }
    35  
    36  // Output:
    37  // hello