Что такое sync.Pool?

Middle+
1.3k просмотров
AFK Offer AI

Пул временных объектов для переиспользования, снижает нагрузку на GC. Объекты могут быть удалены GC в любой момент — не храни в пуле то, что нельзя потерять.

var bufPool = sync.Pool{
    New: func() any {
        return new(bytes.Buffer)
    },
}

buf := bufPool.Get().(*bytes.Buffer) buf.Reset() // используем buf bufPool.Put(buf)

Каждый P имеет свой локальный кеш объектов, что снижает contention. Типичное применение: буферы, парсеры, временные структуры в hot path. Стандартная библиотека использует sync.Pool в fmt, encoding/json.

Следующий вопрос

Что такое пустой интерфейс?