Показаны сообщения с ярлыком нулевое значение в Go. Показать все сообщения
Показаны сообщения с ярлыком нулевое значение в Go. Показать все сообщения

понедельник, 11 мая 2020 г.

Нулевые значения по умолчанию для всех типов Go

Переменные, объявленные без начального значения, устанавливаются в их нулевые значения:

  • 0 для всех целочисленных типов,
  • 0.0 для чисел с плавающей запятой,
  • false для логических значений (bool),
  • "" для строк,
  • nil для интерфейсов, срезов, каналов, карт, указателей и функций.

Элементы массива или структуры будут обнулять свои поля, если не указано значение. Эта инициализация выполняется рекурсивно:

type T struct {
    n int
    f float64
    next *T
}
fmt.Println([2]T{}) // [{0 0 <nil>} {0 0 <nil>}]


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


воскресенье, 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


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