18

What is the easiest method to create an empty buffer of size n in Go using bytes.NewBuffer()?

1
  • 6
    NewBuffer(make([]byte,0,N))? Commented Jan 19, 2018 at 6:25

2 Answers 2

29

Adding some additional info here. The quick way to create a new buffer is briefly mentioned at the end of the doc string:

b := new(bytes.Buffer)

or

b := &bytes.Buffer{}

The Buffer struct define includes a 64 byte internal bootstrap field that is initially used for small allocations. Once the default size is exceeded, a byte slice Buffer.buf is created and internally maintained.

As @leafbebop suggested we can pre-initalize the buf field of the Buffer struct using a new slice.

b := bytes.NewBuffer(make([]byte,0,N))

I also found another option to use the Grow() method:

b := new(bytes.Buffer)
b.Grow(n)

Also it's interesting to point out that the internal buf slice will grow at a rate of cap(buf)*2 + n. This means that if you've written 1MB into a buffer and then add 1 byte, your cap() will increase to 2097153 bytes.

Sign up to request clarification or add additional context in comments.

Comments

0

The bytes.buffer zero value is usable as is, so you can skip the initialization step. Code snippet from docs.

var b bytes.Buffer // A Buffer needs no initialization.
b.Write([]byte("Hello "))

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.