воскресенье, 23 июня 2019 г.

Спецификация Go: инициализация и выполнение программы, нулевое значение

Когда для переменной выделяется хранилище, либо через объявление, либо через вызов new, либо когда создается новое значение, либо через составной литерал, либо через вызов make, и явная инициализация не предоставляется, переменная или значение задаются значением по умолчанию. Каждый элемент такой переменной или значения устанавливается в нулевое значение для его типа: false для логических значений, 0 для числовых типов, "" для строк и nil для указателей, функций, интерфейсов, срезов, каналов и карт. Эта инициализация выполняется рекурсивно, поэтому, например, каждый элемент массива структур будет обнулять свои поля, если не указано значение.

Эти два простых объявления эквивалентны:

var i int
var i int = 0

После

type T struct { i int; f float64; next *T }
t := new(T)

верно следующее:

t.i == 0
t.f == 0.0
t.next == nil

То же самое будет верно и после

var t T


Читайте также:


Комментариев нет:

Отправить комментарий