Ответ 1
Зачем угадывать (правильно), когда некоторая документация?
Когда хранилище выделяется для переменной, либо посредством объявления, либо вызова нового, либо когда создается новое значение, либо через составной литерал, либо вызов make, и не предоставляется явная инициализация, переменной или значению присваивается значение по умолчанию.
Каждый элемент такой переменной или значения устанавливается на нулевое значение для своего типа:
false
для booleans,0
для целых чисел,0.0
для float,""
для строк,- и
nil
для указателей, функций, интерфейсов, срезов, каналов и карт.Эта инициализация выполняется рекурсивно, поэтому, например, каждый элемент массива структур будет иметь свои поля обнуленными, если не указано значение.
Обратите внимание, что нет возможности установить значение struct в nil
(но вы можете установить значение указателя на struct на nil
).