Конвертировать int/int64 в string
Используйте strconv.Itoa для преобразования int в десятичную строку.
s := strconv.Itoa(97) // s == "97"
Предупреждение: в простом преобразовании значение интерпретируется как кодовая точка Unicode, и получающаяся строка будет содержать символ, представленный этой кодовой точкой, закодированный в UTF-8.
s := string(97) // s == "a"
Используйте strconv.FormatInt для форматирования int64 по заданному основанию.
var n int64 = 97
s := strconv.FormatInt(n, 10)
// s == "97" (десятичный)
var n int64 = 97
s := strconv.FormatInt(n, 16)
// s == "61" (шестнадцатеричный)
Конвертировать string в int/int64
Используйте strconv.Atoi для парсинга десятичной строки в int.
s := "97"
if n, err := strconv.Atoi(s); err == nil {
fmt.Println(n+1)
} else {
fmt.Println(s, " не является целым числом.")
}
// Вывод: 98
Используйте strconv.ParseInt, чтобы парсить десятичную строку (основание 10) и проверить, соответствует ли она int64.
s := "97"
n, err := strconv.ParseInt(s, 10, 64)
if err == nil {
fmt.Printf("%d of type %T", n, n)
}
// Вывод: 97 of type int64
Два числовых аргумента представляют собой основание (0, 2 до 36) и размер в битах (от 0 до 64).
Если первый аргумент равен 0, основание подразумевается префиксом строки: основание 16 для "0x", основание 8 для "0" и основание 10 в противном случае.
Второй аргумент указывает целочисленный тип, в который должен вписываться результат. Размеры битов 0, 8, 16, 32 и 64 соответствуют int, int8, int16, int32 и int64.
Конвертировать int в int64 (и обратно)
Размер int зависит от реализации, он составляет 32 или 64 бита, и, следовательно, вы не потеряете никакой информации при преобразовании из int в int64.
var n int = 97
m := int64(n) // безопасно
Однако при преобразовании в более короткий целочисленный тип значение усекается, чтобы соответствовать размеру типа результата.
var m int64 = 2 << 32
n := int(m)
// усекается на машинах с 32-битными целыми числами
fmt.Println(n) // 0 или 4294967296
Общее форматирование (ширина, отступ, знак)
Функция fmt.Sprintf - это полезный общий инструмент для преобразования данных в строку:
s := fmt.Sprintf("%+8d", 97)
// s == " +97"
// (ширина 8, выравнивание по правому краю,
// всегда показывать знак)
Читайте также:
- Обзор обработки строк в Golang
- Основы Go: базовые типы
- Спецификация Go: логические, числовые, строковые типы
Комментариев нет:
Отправить комментарий