Буферы аллоцируются на каждый запрос. Реализуйте process: пул bytes.Buffer с New, и в цикле — Get → Reset → работа → Put. После Reset каждый заход начинается с чистого буфера.
- Задача
- Решение
- Обсуждение
Process: пул буферов с Reset
GolangРешение
func process(n int) string {
bufPool := sync.Pool{
New: func() any { return new(bytes.Buffer) },
}
var out string
for i := 0; i < n; i++ {
buf := bufPool.Get().(*bytes.Buffer)
buf.Reset()
buf.WriteString("x")
out = buf.String()
bufPool.Put(buf)
}
return out
}