New() vs Make() in Golang
Fleeting- External reference: https://www.godesignpatterns.com/2014/04/new-vs-make.html
new() vs make() in golang go
three different ways to create a pointer p that points to a zeroed bytes.Buffer value, each of which are equivalent:
/ Allocate enough memory to store a bytes.Buffer value / and return a pointer to the value’s address. var buf bytes.Buffer p := &buf
/ Use a composite literal to perform allocation and / return a pointer to the value’s address. p := &bytes.Buffer{}
/ Use the new function to perform allocation, which will / return a pointer to the value’s address. p := new(bytes.Buffer)
make() function, on the other hand, is a special built-in function that is used to initialize slices, maps, and channels. Note that make() can only be used to initialize slices, maps, and channels, and that, unlike the new() function, make() does not return a pointer
Slices, maps, and channels can also be initialized using a composite literal expressions, as well as with make().