Объявление переменных в Go
var, := и вывод типа
«Объявление переменных в Go» — бесплатный урок Go Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.
Что такое переменная
Переменная — это именованная область хранения значения. В Go у каждой переменной есть тип, который фиксируется во время компиляции.
- В Go используется статическая типизация — типы не могут изменяться во время выполнения
- Если переменной явно не присвоено значение, она всегда получает стандартное нулевое значение
- Понятные имена важны: Go предпочитает короткие и ясные имена длинным
Объявление var
Ключевое слово var явно объявляет одну или несколько переменных:
package main
func main() {
var name string
var age int
var pi float64 = 3.14
_ = name
_ = age
_ = pi
}Краткое объявление переменной :=
Внутри функций можно использовать := для краткого объявления и присваивания за один шаг.
- Тип выводится из правой части
:=доступен только внутри тела функции- Как минимум одна переменная слева должна быть новой
package main
func main() {
city := "Ankara" // string inferred
count := 42 // int inferred
temp := 36.6 // float64 inferred
_ = city
_ = count
_ = temp
}Нулевые значения
Go автоматически инициализирует каждую объявленную переменную её нулевым значением:
int,float64→0string→""(пустая строка)bool→false- Указатели, срезы, отображения и каналы →
nil
Нулевые значения устраняют распространённые в C/C++ ошибки, связанные с неинициализированными переменными.
Объявление нескольких переменных
Объявляйте и присваивайте значения нескольким переменным одновременно, используя блочную или кортежную форму:
package main
var (
host = "localhost"
port = 8080
debug = false
)
func main() {
x, y := 10, 20
_ = x
_ = y
}Правила вывода типа
При использовании := Go выводит тип из литерала:
- Целочисленные литералы →
int - Литералы с плавающей точкой →
float64 - Строковые литералы →
string - Комплексные литералы →
complex128
Если нужен определённый тип, например int32, используйте явное объявление var или преобразование.
Переменные уровня пакета и уровня функции
Переменные могут находиться на уровне пакета (быть глобальными для пакета) или на уровне функции (быть локальными для функции):
- Уровень пакета: используйте
var— переменная доступна из любой части пакета - Уровень функции: используйте
:=илиvar— переменная видна только внутри функции - Отдавайте предпочтение переменным уровня функции, чтобы состояние оставалось локальным
Пустой идентификатор _
Пустой идентификатор _ отбрасывает ненужное значение. В Go каждую объявленную переменную необходимо использовать — _ позволяет обойти это требование:
package main
func divide(a, b int) (int, int) {
return a / b, a % b
}
func main() {
quotient, _ := divide(10, 3) // discard remainder
_ = quotient
}Скрытие переменных
Скрытие происходит, когда во вложенной области видимости объявляется переменная с тем же именем, что и переменная во внешней области видимости:
- Вложенная переменная скрывает внешнюю в пределах своей области видимости
- Это может привести к трудноуловимым ошибкам — используйте такой приём осознанно
- Используйте
go vetи анализаторы, такие какstaticcheck, чтобы обнаруживать случайное скрытие переменных
Распространённые ошибки при использовании :=
Остерегайтесь следующих подводных камней :=:
- Использование
:=на уровне пакета → ошибка компиляции - Все переменные слева уже существуют → вместо этого используйте
= - Случайное скрытие внешней переменной ошибки в блоках if-err
Если сомневаетесь, используйте явное объявление var для ясности.
Быстрая проверка
Какой из следующих вариантов является правильным синтаксисом краткого объявления переменной в Go?
Повторение: объявление переменных
Теперь Вы знаете, как объявлять переменные в Go:
var name type— явное объявление с нулевым значениемvar name = value— объявлениеvarс выводом типаname := value— краткое объявление внутри функций- Нулевые значения назначаются автоматически — неинициализированного состояния не бывает
_отбрасывает ненужные значения
Далее: встроенные типы Go и их нулевые значения в подробностях.
Задание для практики
Попробуйте сами: объявите переменную уровня пакета appName типа string и переменную уровня функции retries, используя := и присвоив ей значение 3.
Помните: для переменных уровня пакета используется var, а := допустим только внутри тел функций.
Часто задаваемые вопросы
Урок «Объявление переменных в Go» бесплатный?
Да — полный текст урока «Объявление переменных в Go» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.
Чему я научусь в уроке «Объявление переменных в Go»?
var, := и вывод типа Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Go Academy?
Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Объявление переменных в Go»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Go Academy?
Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Объявление переменных в Go
- Встроенные типы Go
- Константы и iota
- Преобразование типов в Go