Перейти до основного вмісту
Модуль 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жодного "правдивого", лише чистий bool
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 суворий: змінна, оголошена і ніколи не використовується, є компіляцією помилка, а не попередження. Те саме стосується невикористаних imports.

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

Щоб тимчасово вимкнути правило, використовуйте _ (порожній ідентифікатор):

Go
_ = x

Ваша черга

вправи#go.m1.l1.e1
Спроби: 0Завантаження…

Використовуйте var, щоб оголосити назву змінної типу string зі значенням "Ada" та надрукувати її.

Завантаження редактора…
Показати підказку

Довга форма: var <name> <type> = <value>`.

Рішення доступне після 3 спроб

вправи#go.m1.l1.e2
Спроби: 0Завантаження…

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

Завантаження редактора…
Показати підказку

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

Рішення доступне після 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% щоденних випадків.