инициализация и выполнение программы, нулевое значение
Когда для переменной выделяется хранилище, либо через объявление, либо через вызов 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 TLast updated
Was this helpful?