Перейти к основному содержимому
Модуль 1 · Урок 1 из 51/50 в курсе~10 min
Уроки модуля (1/5)

Переменные и типы

В Go каждая переменная имеет статический тип, известный компилятору: объявлено, переменная не может изменить тип. Эта жесткость — совсем другая из JavaScript или Python — это цена, которую вы платите за получение времени компиляции. ошибки вместо ошибок времени выполнения, небольшие двоичные файлы и предсказуемость производительность.

Две формы декларации

var с явным типом

Go
var name string = "Ada"
var age int = 36
var active bool

Если вы опустите значение (как в var active bool), переменная получит нулевое значение своего типа — мы вернемся к этому в следующем уроке.

Краткая декларация :=

Внутри функции вы можете использовать :=, который определяет тип из выражение справа. Это идиоматическая форма, которую вы будете использовать. 90% времени:

Go
name := "Ada"   // string
age := 36        // int
pi := 3.14       // float64
active := true   // bool

Основные типы, с которыми вы сразу познакомитесь

ТипПримерЗаметки
int42размер зависит от процессора (32 или 64 бита)
float643.14по умолчанию для десятичных литералов
string"Ada"UTF-8, неизменяемый
booltrue, falseникакой «правды», только чистое логическое значение
rune'A'псевдоним int32, представляет собой кодовую точку Unicode
byte0x7Fпсевдоним uint8

Также есть int8/16/32/64, uint8/16/32/64, float32 и complex64/128. когда вам нужны точные размеры (двоичный анализ, взаимодействие и т. д.).

Несколько объявлений

Вы можете объявить несколько переменных с помощью блока var или множественного числа :=:

Go
var (
    name   string = "Ada"
    age    int    = 36
    active bool
)

x, y := 10, 20
a, b, c := "a", 2, true   // different types: no problem

Переменные объявлены, но не используются

Go строг: переменная объявленная и никогда не используемая является компиляцией ошибка, а не предупреждение. То же самое относится и к неиспользуемым import.

Go
func main() {
    x := 42
    // error: x declared and not used
}

Чтобы временно отключить правило, вы используете _ (пустой идентификатор):

Go
_ = x

Ваша очередь

Упражнение#go.m1.l1.e1
Попыток: 0Загрузка…

Используйте var, чтобы объявить имя переменной типа string со значением «Ada» и распечатать его.

Загрузка редактора…
Показать подсказку

Полная форма: `var <имя> <тип> = <значение>`.

Решение доступно после 3 попыток

Упражнение#go.m1.l1.e2
Попыток: 0Загрузка…

В одной строке используйте :=, чтобы присвоить 36 возрасту, а «Рома» — городу, а затем выведите оба значения.

Загрузка редактора…
Показать подсказку

Вы можете назначить несколько переменных одновременно: `a, b := 1, "due"`.

Решение доступно после 3 попыток

Quiz#go.m1.l1.e3
Готово

Какое из этих объявлений вызывает ошибку компиляции, если оно размещено ВНЕ функции?

Go
// (a)
var name string = "Ada"

// (b)
age := 36

// (c)
const PI = 3.14
Варианты ответа

Резюме

  • Статический тип, автоматически выведенный с помощью := или объявленный с помощью var.
  • := только внутри функций; только на уровне пакета var/const.
  • Неиспользуемые переменные и импорт = ошибка компиляции: используйте _, чтобы отключить их.
  • int/float64/string/bool охватывают 90% повседневных случаев.