Объявление и использование переменных
Начнем с процесса объявления и использования переменных в 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, необходимо использовать в какой-либо части кода.