What is the easiest method to create an empty buffer of size n
in Go using bytes.NewBuffer()
?
To use the buffer in the go language, we need to import the bytes package of the go language. Once we have imported the bytes package, we can create a variable with the byte package like var x =bytes. Buffer, and on the variable x, we can perform all the operations related to the buffering of string.
The byte value of 0 is is known as a "null byte". It normally never occurs in regular text, but often occurs in binary data (e.g. images, compressed files, etc.)
In general Java terminology, an empty byte array is a byte array with length zero, and can be created with the Java expression new byte[0] .
bytes() takes three optional parameters: source (Optional) - source to initialize the array of bytes. encoding (Optional) - if the source is a string, the encoding of the string. errors (Optional) - if the source is a string, the action to take when the encoding conversion fails (Read more: String encoding)
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With