• Задача
  • Решение
  • Обсуждение

Process: пул буферов с Reset

Буферы аллоцируются на каждый запрос. Реализуйте process: пул bytes.Buffer с New, и в цикле — Get → Reset → работа → Put. После 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
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

00:00:00
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки