Both methods are built-in and used for memory allocation and initialization of types.
new()
- Allocates zeroed storage for a variable of the specified type (“zeroed memory” refers to a block of memory that has all of its bits set to zero)
- Initializes it to the zero value of the type, e.g. 0 or an empty string.
- Returns a pointer to the newly allocated value
new()
can be used for all types of data, even simple types like integers- Can be used with the
var
keyword and short assignment:=
- Usually used for types like structs
In the example above, this will print a pointer to the empty struct: &{ 0}
.
Values
new()
can be used with both the var
keyword and the shortcut for variable initialization:
make()
Compared to new()
it can be only used for Go’s built-in types slices, maps and channels. make()
does not only allocate memory, but also initialize the underlying data structure:
- For slices,
make
allocates an array of the specified type and size, and returns a slice reference to this array. This reference includes the length and capacity of the slice. - For maps,
make
initializes the hash map structure. - For channels,
make
sets up the channel’s data buffer and control structures.
make()
can also be used with both the var
keyword and the short assignment :=
.
Next chapter: Packages and Package Management