Пул объектов для переиспользования и снижения давления на GC. Get() возвращает объект из пула (или новый), Put(obj) возвращает объект в пул. Пул может очищаться в любой момент; объекты не привязаны к горутине. Используют для временных буферов, парсеров и т.п.
var bufPool = sync.Pool{New: func() any { return new(bytes.Buffer) }}
buf := bufPool.Get().(*bytes.Buffer)
defer buf.Reset(); defer bufPool.Put(buf)