Переменные, типы, выражения и ветвление

Переменные, константы и базовые типы

Содержание курса

В предыдущих уроках вы уже написали программу, которая компилируется и запускается. Теперь разберёмся, как Go работает с данными — как объявить переменную, задать ей тип и значение, и почему компилятор не даст вам сделать это «не так».

var и := — объявление переменных и ограничение области видимости :=

У var три рабочие формы, и между ними есть реальная разница.

var x int — объявляет переменную типа int без начального значения. Go сразу присваивает ей нулевое значение, в данном случае 0. Никакой «неинициализированной памяти» здесь нет: компилятор гарантирует, что переменная готова к использованию.

var x int = 42 — тип и значение указаны явно. Это бывает полезно, когда вы хотите зафиксировать тип, а значение правой части могло бы подойти и для другого.

var x = 42 — тип выводится из значения. Компилятор видит целочисленный литерал 42 и делает x типом int.

Теперь :=. Это сокращённая форма для объявления и инициализации в одном выражении:

package main

import "fmt"

func main() {
    x := 42
    fmt.Println(x) // 42
}

Тип x здесь int — вывелся из 42. Запись := короче, и в теле функций она встречается чаще всего.

Главное ограничение: := работает только внутри функции. Попробуйте вынести его на уровень пакета:

package main

x := 42 // вне функции

func main() {}

Компилятор ответит:

syntax error: non-declaration statement outside function body

Это не предупреждение — программа не скомпилируется. На уровне пакета переменные объявляются только через var. Разграничение простое: var — везде, := — только внутри func.

Ещё один момент про :=: если в левой части несколько имён, хотя бы одно из них должно быть новым в текущей области видимости. Иначе компилятор снова откажет — повторное объявление уже существующей переменной через := в той же области недопустимо.

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.