有关 strings.Builder 内存分配问题?

qclaogui · · 714 次点击
你说得对, 的确是这样, ```go var sql strings.Builder sql.Grow(10) // capacity = 10 ``` 再试一下, ```go var sql strings.Builder sql.WriteByte('a') sql.Grow(10) // capacity = 26 ``` 声明以后立马设置容量比较好,小于8就没有必要设置了
#2
更多评论
Grow方法的实现是这样的: ``` buf := make([]byte, len(b.buf), 2*cap(b.buf)+n) ``` 你的代码中: ``` var sql strings.Builder sql.Grow(10) // capacity should 30 ``` 此时cap(b.buf)应该是0吧,所以Grow后的cap为10,不是30
#1