Переменные, типы, выражения и ветвление

Переменные, константы и базовые типы

Содержание курса

Явное преобразование типов: int↔float64 и отбрасывание дробной части

Go не выполняет числовые преобразования автоматически. Если у вас есть int и нужен float64 — вы должны сказать об этом явно. Синтаксис: TargetType(value).

package main

import "fmt"

func main() {
    i := 7
    f := float64(i)
    fmt.Println(f) // 7

    g := 3.9
    n := int(g)
    fmt.Println(n) // 3
}

Первое преобразование — int в float64 — прямолинейное: 7 становится 7 с плавающей точкой.

Второе интереснее. int(3.9) даёт 3, а не 4. Go отбрасывает дробную часть — это не округление, это усечение в сторону нуля. int(3.1), int(3.5) и int(3.9) дают одинаковый результат: 3.

Что будет, если попробовать обойтись без преобразования?

var i int = 5
var f float64 = i // ошибка компиляции
cannot use i (variable of type int) as type float64 in variable declaration

Компилятор отказывает даже в случае, когда значение «очевидно» совместимо. Это не ограничение — это защита: неявные преобразования между числовыми типами исторически порождают труднозаметные ошибки, и Go выбирает явность.

Синтаксис TargetType(value) работает для любых числовых типов, доступных в этом уроке. Результат всегда можно проверить через fmt.Println — именно так стоит делать, когда поведение усечения неочевидно.