Как преобразовать uint32 в строку?

Мне нужно преобразовать uint32 в строку. Как мне это сделать. strconv.Itoa, похоже, не работает. Длинное хранилище: мне нужно преобразовать UID, полученный через пакет imap, в строку, чтобы я мог установить его позже. В качестве побочного примечания мне интересно, почему такие преобразования трудны в Go. Литьевая string(t) могла быть намного проще

Ответ 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.