Уроки модуля (1/5)
Переменные и типы
В Go каждая переменная имеет статический тип, известный компилятору: объявлено, переменная не может изменить тип. Эта жесткость — совсем другая из JavaScript или Python — это цена, которую вы платите за получение времени компиляции. ошибки вместо ошибок времени выполнения, небольшие двоичные файлы и предсказуемость производительность.
Две формы декларации
var с явным типом
var name string = "Ada"
var age int = 36
var active boolЕсли вы опустите значение (как в var active bool), переменная получит
нулевое значение своего типа — мы вернемся к этому в следующем уроке.
Краткая декларация :=
Внутри функции вы можете использовать :=, который определяет тип из
выражение справа. Это идиоматическая форма, которую вы будете использовать.
90% времени:
name := "Ada" // string
age := 36 // int
pi := 3.14 // float64
active := true // boolОсновные типы, с которыми вы сразу познакомитесь
| Тип | Пример | Заметки |
|---|---|---|
int | 42 | размер зависит от процессора (32 или 64 бита) |
float64 | 3.14 | по умолчанию для десятичных литералов |
string | "Ada" | UTF-8, неизменяемый |
bool | true, false | никакой «правды», только чистое логическое значение |
rune | 'A' | псевдоним int32, представляет собой кодовую точку Unicode |
byte | 0x7F | псевдоним uint8 |
Также есть int8/16/32/64, uint8/16/32/64, float32 и complex64/128.
когда вам нужны точные размеры (двоичный анализ, взаимодействие и т. д.).
Несколько объявлений
Вы можете объявить несколько переменных с помощью блока var или множественного числа :=:
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.
func main() {
x := 42
// error: x declared and not used
}Чтобы временно отключить правило, вы используете _ (пустой идентификатор):
_ = xВаша очередь
Используйте var, чтобы объявить имя переменной типа string со значением «Ada» и распечатать его.
Показать подсказку
Полная форма: `var <имя> <тип> = <значение>`.
Решение доступно после 3 попыток
В одной строке используйте :=, чтобы присвоить 36 возрасту, а «Рома» — городу, а затем выведите оба значения.
Показать подсказку
Вы можете назначить несколько переменных одновременно: `a, b := 1, "due"`.
Решение доступно после 3 попыток
Какое из этих объявлений вызывает ошибку компиляции, если оно размещено ВНЕ функции?
// (a)
var name string = "Ada"
// (b)
age := 36
// (c)
const PI = 3.14Резюме
- Статический тип, автоматически выведенный с помощью
:=или объявленный с помощьюvar. :=только внутри функций; только на уровне пакетаvar/const.- Неиспользуемые переменные и импорт = ошибка компиляции: используйте
_, чтобы отключить их. int/float64/string/boolохватывают 90% повседневных случаев.