// Reset resets the Builder to be empty.
func (b *Builder) Reset() {
b.addr = nil
b.buf = nil
}
代码片段来自go strings.Builder中的源代码。缓冲区设置为nil而不是b.buf[:0]. 将其设置为nil而不是保留容量的原因是什么?
编辑: 我可以看到它Reset()可用于 GC 底层缓冲区并允许重新使用 Builder 结构,但初始化结构似乎是边际成本,因为它只是两个指针,而底层数组可能是更大,并且可以重复使用。我觉得应该有一个Clear()函数可以保持底层缓冲区的容量但将其长度减少到 0,而且实现起来很简单。这让我相信为什么没有这样做是有原因的,我很好奇这个原因是什么。
慕后森
汪汪一只猫
一只甜甜圈
相关分类