Когда для переменной выделяется хранилище, либо через объявление, либо через вызов 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
Читайте также:
- Эффективный Go: данные, аллокация с помощью new
- Спецификация Go: переменные (variables)
- Эффективный Go: конструкторы и составные литералы
Комментариев нет:
Отправить комментарий