Перейти к основному содержимому

Переменные в Go

Переменная — это именованное место в программе, где хранится значение, чтобы вы могли использовать его позже.


Типы переменных в Go

Тип переменной определяет, какие данные она может хранить. В Go есть несколько типов, в том числе такие:

  • int - целые числа, например 123 или -123
  • float32 - числа с плавающей точкой, с десятичной частью, например 19.99 или -19.99
  • string - текст, например «Hello World», записанный в двойных кавычках
  • bool - одно из двух состояний, true или false

Объявление (создание) переменных

В Go есть два способа объявить переменную. Синтаксис каждого из них показан ниже.

1. Ключевое слово var:

Напишите var, затем имя переменной и её тип.

Примечание: Можно опустить type или value, но никогда не оба сразу.

2. Знак :=:

Напишите имя переменной, затем :=, затем значение.

Примечание: В этой форме тип выводится: компилятор определяет его по указанному вами значению.

Примечание: Поскольку компилятору нужно это значение, := нельзя использовать для объявления переменной без присваивания значения.

Синтаксис с var

main.go
var variablename type = value

Сокращённый синтаксис

main.go
variablename := value

Объявление переменной с начальным значением

Когда вы уже знаете, что должна хранить переменная, вы можете выполнить объявление и присваивание в одной строке, как показано в примере ниже.

Примечание: Ни у student2, ни у x тип в коде не указан, поэтому их типы выводятся из их значений.

Пример

Prompt
Объявите переменные с помощью var с указанием типа, var с выводимым типом и сокращённой записи :=. Выведите все три.
Вывод: Программа на Go и захваченный вывод

Объявление переменной без начального значения

Go никогда не оставляет переменную неинициализированной. Если вы объявите переменную, не задав ей значение, она автоматически получит значение по умолчанию для своего типа:

Пример

Программа ниже объявляет три переменные, a, b и c, и не задаёт ни одной из них значение. Запустив её, вы увидите, что каждая уже содержит значение по умолчанию для своего типа: a равно "", b равно 0, а c равно false.

Prompt
Объявите переменные типов string, int и bool без значений и выведите их значения по умолчанию.
Вывод: Программа на Go и захваченный вывод

Присваивание значения после объявления

Необязательно задавать переменной значение сразу. Можно сначала объявить её, а значение присвоить позже: это полезно, когда вы ещё не знаете значение.

Примечание: Это работает только с var. При использовании «:=» значение всегда должно быть частью объявления.

Пример

Prompt
Объявите переменную типа string, присвойте ей значение после объявления и выведите её.
Вывод: Программа на Go и захваченный вывод

Разница между var и :=

var и := различаются в нескольких небольших деталях:

var можно использовать и внутри, и вне функций, а объявить переменную и присвоить ей значение можно отдельными шагами.

:= работает только внутри функций, а объявление и присваивание нельзя разделить: они должны выполняться в одной строке.

Пример

Здесь var объявляет переменные вне какой-либо функции, и это работает без проблем:

Prompt
Объявите переменные вне функции с помощью var и выведите их внутри функции main.
Вывод: Программа на Go и захваченный вывод

Пример

Эта программа пытается использовать := вне функции, поэтому вместо запуска она завершается ошибкой.

Prompt
Покажите ошибку, возникающую при использовании := вне функции в Go.
Вывод: Программа на Go и захваченный вывод