Зарегистрируйтесь, чтобы продолжить обучение

Преобразование типов Основы Go

В языке Go преобразование типов всегда выполняется явно. Это означает, что нельзя просто сложить int и float64, или передать int в функцию, ожидающую string. Явное преобразование требуется везде, где участвуют разные типы.

Преобразование между числовыми типами

var a int = 10
var b float64 = float64(a)

Преобразование int в float64. Без него компилятор выдаст ошибку:

var a int = 10
var b float64 = a // ошибка: нельзя неявно преобразовать int в float64

Преобразование float64 в int

var f float64 = 3.9
var i int = int(f)
fmt.Println(i) // => 3

Преобразование отбрасывает дробную часть.

Преобразование int в string

Чтобы получить строковое представление числа, используется strconv.Itoa():

import "strconv"

var n int = 65
fmt.Println(strconv.Itoa(n)) // => "65"

Преобразование string в int

import "strconv"

var s string = "42"
n, err := strconv.Atoi(s)
fmt.Println(n) // => 42

Строку нельзя просто привести к числу. Используется strconv.Atoi(), потому что строка может содержать любое значение, не обязательно число.

Преобразование bool

bool не может быть приведён ни к числу, ни к строке напрямую.

var flag bool = true
// var x int = int(flag) // ошибка: нельзя преобразовать bool в int
// var s string = string(flag) // ошибка: нельзя преобразовать bool в string

Для строк используется fmt.Sprintf():

import "fmt"

var flag bool = true
s := fmt.Sprintf("%v", flag)
fmt.Println(s) // "true"

Ошибки при несовместимых типах

Go не делает неявных преобразований между несовместимыми типами:

var x int = 10
var y uint = uint(x) // допустимо: явное преобразование

// Компилятор выдаст предупреждение
// conversion from int to string yields a string of one rune, not a string of digits
var z string = string(x)
fmt.Println(z) // символ с кодом 10, а не "10"
fmt.Println(y)

Дополнительные материалы

  1. Пакет strconv
  2. Type switch

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff