Преобразование типов и константы
Преобразование типов
В Go нет неявных преобразований — только явные:
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
Попытка присвоить int переменной float64 без явного преобразования — ошибка компиляции. Это защищает от скрытых потерь точности.
Вывод типов
Компилятор выводит тип из правой части при :=:
i := 42 // int
f := 3.14 // float64
c := 1 + 2i // complex128
s := "hello" // string
Константы
Константы объявляются с const и вычисляются на этапе компиляции:
const Pi = 3.14159
const MaxSize = 1024
const (
StatusOK = 200
StatusNotFound = 404
)
iota
iota — счётчик в const-блоке, инкрементируется с каждой строкой начиная с 0:
const (
Sunday = iota // 0
Monday // 1
Tuesday // 2
)
Константы «нетипизированы» до момента использования — числовая константа участвует в выражениях с разными числовыми типами без явного преобразования.
Упражнения
| № | Задание | Сложность |
|---|---|---|
| 1 | Упражнение 1 | easy |
| 2 | Упражнение 2 | easy |
| 3 | Упражнение 3 | medium |
| 4 | Упражнение 4 | medium |