Перейти к содержимому
2 / 15

Типы, нулевые значения и объявления: var, короткое объявление, const и iota

В Go нет неинициализированных переменных: любая объявленная переменная получает нулевое значение своего типа — 0 для чисел, "" для строк, false для булевых, nil для указателей, слайсов, карт, каналов, функций и интерфейсов. Это не мелочь, а принцип проектирования: тип считается хорошо спроектированным, если его нулевое значение сразу готово к работе — sync.Mutex и bytes.Buffer именно такие. Объявлять можно двумя способами: var x T работает везде, включая уровень пакета, и позволяет не задавать значение; короткое x := значение работает только внутри функций и выводит тип. Константы в Go нетипизированы по умолчанию, поэтому const n = 3 подставится и в int, и в float64 без приведения, и вычисляются они на этапе компиляции. Для перечислений есть iota — счётчик, обнуляемый в каждом блоке const и увеличивающийся на каждой строке.

Типы, нулевые значения и объявления: var, короткое объявление, const и iota | JScriptiser