Базовые типы

В го есть стандартные типы: bool, int (uint / 8-64), float, [[Как устроены строки в Golang|string]]. Есть отдельные типы byte (uint8) - для байтов, и rune (int32) - для unicode символов ([[Как устроены строки в Golang]]) Есть отдельный тип для комплексных чисел complex64 и complex128. Размер intuint, и uintptr зависит от разрядности ОС: 32-bit и 64-bit соответственно.

Составные типы

[[Массивы]], [[Как устроены array и slice в Golang|слайсы]], [[Как устроены map в Golang|мапы]], [[каналы]]

Указатели

На все базовые и составные типы можно сделать указатель.

Другие типы

на которые нельзя сделать указатель

  • Функции. Это first-class citizens. Можно сделать свой тип для сигнатуры функции (type handler func(io.Reader, io.Writer) error). Можно передавать как параметры других функций или возвращать.
  • [[Интерфейсы]]

Zero value

Variables declared without an explicit initial value are given their zero value.

  • 0 для numeric types,
  • false для bool
  • "" (пустая строка) для строк.
  • nil для указателей и функций
  • все поля структур заполняются zero value
  • массив заполняется zero value
  • пустой unsafe.Pointer и len=0, cap=0 для слайса [[Как устроены array и slice в Golang]]
  • nil бакеты для map. При записи будет паника, нужно обязательно инициализировать через make [[Как устроены map в Golang]]