Why guess (correctly) when there’s some documentation ?
When storage is allocated for a variable, either through a declaration or a call of new, or when a new value is created, either through a composite literal or a call of make, and no explicit initialization is provided, the variable or value is given a default value.
Each element of such a variable or value is set to the zero value for its type:
false
for booleans,0
for integers,0.0
for floats,""
for strings,- and
nil
for pointers, functions, interfaces, slices, channels, and maps.This initialization is done recursively, so for instance each element of an array of structs will have its fields zeroed if no value is specified.
Note that there’s no way to set a struct value to nil
(but you could set the value of a pointer to a struct to nil
).