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

Завершено

Начнем с процесса объявления и использования переменных в Go. Объявить переменную можно разными способами. Мы рассмотрим каждый из них, после чего вы выберете тот, который оптимально соответствует вашим потребностям или стилю работы. В ходе изучения основных понятий в области переменных мы сделаем акцент на ряде особенностей в Go, которые обычно отсутствуют в других языках программирования.

В этом разделе содержатся фрагменты кода, которые можно запускать в Visual Studio Code или на тестовой площадке Go.

Объявление переменных

Для объявления переменной необходимо использовать ключевое слово var:

var firstName string

Предыдущая инструкция объявляет переменную с именем firstName типа string. (Мы поговорим о типах данных в предстоящем разделе.) В этом примере показан самый простой способ объявления переменной. Если вы хотите объявить другую переменную, просто добавьте аналогичную инструкцию к предыдущей. Можно объявить несколько переменных в одной строке, если они одинаковые:

var firstName, lastName string

Добавление запятой (,) после имени переменной означает, что будет объявлена и другая переменная. В этом случае предыдущая инструкция объявляет две переменные с именами firstName и lastName типа string. Если требуется добавить третью переменную типа int, код будет выглядеть следующим образом:

var firstName, lastName string
var age int

Еще один способ написания предыдущей инструкции заключается в использовании круглых скобок после ключевого слова var — как если бы у вас был выделенный блок для объявления переменных. Тогда код будет выглядеть следующим образом:

var (
    firstName, lastName string
    age int
)

Инициализация переменных

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

var (
    firstName string = "John"
    lastName  string = "Doe"
    age       int    = 32
)

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

var (
    firstName = "John"
    lastName  = "Doe"
    age       = 32
)

Go определит, что переменные firstName и lastName имеют тип string, а переменная age имеет тип int.

Различные способы инициализации переменных

В Go объявлять и инициализировать переменные можно в одной строке. Имя каждой переменной отделяется запятой — и так для каждого значения (в том же порядке), как показано далее:

var (
    firstName, lastName, age = "John", "Doe", 32
)

Есть еще один способ объявления и инициализации переменных. Он является самым распространенным в Go. Прежний пример может выглядеть следующим образом:

package main

import "fmt"

func main() {
    firstName, lastName := "John", "Doe"
    age := 32
    fmt.Println(firstName, lastName, age)
}

Примечание.

Обратите внимание на инструкцию import "fmt". Мы используем ключевое слово import для переноса содержимого пакета в область. Мы импортируем пакет "fmt", чтобы мы могли использовать в нашем коде метод Println. Это ключевое слово будет рассмотрено более подробно на следующем уроке.

Выполните приведенный выше код, чтобы убедиться, что это рабочий способ объявления и инициализации переменных.

Обратите внимание, что здесь сразу после определения имени переменной необходимо указать двоеточие со знаком равенства (:=) и его соответствующее значение. При использовании двоеточия со знаком равенства объявляемая переменная должна быть новой. Если используется двоеточие со знаком равенства и переменная уже объявлена, скомпилировать программу не удастся. Попробуйте добавить возраст в качестве константы (см. следующий раздел), но при этом используйте двоеточие со знаком равенства (:=).

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

Объявление ограничений

Иногда в коде требуются статические значения, известные как константы. В Go поддерживается использование констант. Для их объявления служит ключевое слово const.

Например, можно объявить константу следующим образом:

const HTTPStatusOK = 200

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

Чтобы объявить несколько констант в одном блоке, это можно сделать следующим образом:

const (
    StatusOK              = 0
    StatusConnectionReset = 1
    StatusOtherError      = 2
)

Примечание.

В Go существует интересное понятие, связанное с константами, которое называется iota и не рассматривается в этом модуле. Дополнительные сведения о нем можно найти на вики-странице по Go на сайте GitHub. Просто имейте в виду, что iota — это ключевое слово, которое используется в Go для упрощения определений констант, когда значения являются последовательными.

Несмотря на сходство констант и переменных, следует также выделить некоторые ключевые отличия. Например, можно объявить константы без их использования и не получить сообщение об ошибке. Для объявления констант нельзя использовать знак равенства двоеточия. В противном случае Go выдаст соответствующее сообщение.

При объявлении переменных без их использования в Go возникнет ошибка.

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

Например, давайте вернемся к одному из предыдущих примеров и удалим вызов fmt.Println:

func main() {
    firstName, lastName := "John", "Doe"
    age := 32
}

При выполнении этого кода в Visual Studio Code или на тестовой площадке Go вы увидите ошибки в строках, в которых объявляются переменные. Появятся следующие сообщения об ошибках:

./main.go:4:2: firstName declared but not used
./main.go:4:13: lastName declared but not used
./main.go:5:2: age declared but not used

Имейте в виду, что каждую переменную, объявляемую в Go, необходимо использовать в какой-либо части кода.