On Tue, Dec 19, 2017 at 11:08 AM, Paul Boyd <boyd.pa...@gmail.com> wrote: > > Sorry if this is a dumb question that's been answered before, but I can't > find anything about it. > > I'm calling Grow() on a bytes.Buffer and I thought that would increase Cap() > and the size of the underlying []byte. But, it doesn't seem to: > https://play.golang.org/p/3j8YCpB59s That example works if I call Grow() > with a value more than Cap()*2, but anything less and Cap() remains > unchanged. > > Some background, if it helps, I was attempting to re-use bytes.Buffer > objects with sync.Pool. But the data I'm dealing with is a variable size, so > if I get back a buffer that's too small I'm calling Grow() for the > difference. Subsequently using Bytes()[:expectedSize], which sometimes > panics. This is basically what was going on: > https://play.golang.org/p/gBvcvs79T7 > > Am I just misusing bytes.Buffer? Is calling Grow() with a value less than > Cap() unsupported? What am I missing?
For efficiency for small buffers, a bytes.Buffer starts out with an internal 64 byte buffer. You aren't going to see interesting results from Grow unless you first Grow the buffer past that size. Ian -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.