// Reset resets the Builder to be empty.
func (b *Builder) Reset() {
b.addr = nil
b.buf = nil
}
Фрагмент кода из исходного кода в go строках. Строитель . Буфер установлен на nil
вместо b.buf[:0]
. Какая причина была бы установить его на nil
вместо сохранения емкости?
РЕДАКТИРОВАТЬ: Я вижу, что Reset()
может использоваться для G C базового буфера и разрешить повторное использование структуры Builder, но кажется, что инициализация структуры требует дополнительных затрат, поскольку она состоит всего из двух указателей, тогда как базовый массив мог бы быть намного больше и мог бы быть использован повторно. Я чувствую, что должна была быть функция Clear()
, которая сохраняла емкость основного буфера, но уменьшала его длину до 0, и это было бы тривиально реализовать. Это заставляет меня верить, что есть причина, почему это не было сделано, и мне любопытно, что это за причина.