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