Мне нужно преобразовать uint32 в строку. Как мне это сделать. strconv.Itoa, похоже, не работает. Длинное хранилище: мне нужно преобразовать UID, полученный через пакет imap, в строку, чтобы я мог установить его позже. В качестве побочного примечания мне интересно, почему такие преобразования трудны в Go. Литьевая string(t)
могла быть намного проще
Как преобразовать uint32 в строку?
Ответ 1
Я бы просто использовал Sprintf или даже Sprint:
var n uint32 = 42
str := fmt.Sprint(n)
println(str)
Go строго типизирован. Кастинг числа непосредственно в строку не имеет смысла. Подумайте о C, где string - char *
который является указателем на первую букву строки, завершенной \0
. Приведение числа к строке приведет к тому, что первый указатель на письмо будет содержать адрес номера, что не имеет смысла. Вот почему вам нужно "активно" конвертировать.
Ответ 2
Я бы сделал это с помощью strconv.FormatUint
:
import "strconv"
var u uint32 = 17
var s = strconv.FormatUint(uint64(u), 10)
// "17"
Обратите внимание, что ожидаемым параметром является uint64
, поэтому uint64
вы должны uint32
свой uint32
. Нет специальной функции FormatUint32
.