Алексей Волегов: я для того и создают uint 8/16 формат чтоб выделялось меньше памяти а по тому ответу я должен помимо 16 ещё 64 выделить.
Пока дошёл только до такого но фактически это одно и тоже, а нужно конвертировать без дополнительных переменных
var i uint16
i = 55
var s string
Алексей Волегов:
Алексей Волегов: честно говоря не могу понять как мне должен помочь ваш код. itoa ваще нет смысла использовать потому, что он работает только с int64, а ParseInt возвращает тоже 64 битную переменную. А мне то нужно работать с 8 и 16, а все эти функции не проглатывают их
LittleBuster: да, ParseInt возвращает int64, который вы потом можете уже конвертнуть. А так же, как я понял, он проверяет может ли число конвертнуться к 8/16 bit и если нет выдает ошибку. Если нужна конвертация в одну строку можете посмотреть сам пакет, исходники ведь есть.
Но всёравно меня смущают эти int64() для конвертации, получается что я так и так выделяю память под 64 битную переменную вместо работы с чисто 8мибитной
go сейчас компилирует сам себя, так что все исходники на go написаны =)
Но такая функция будет косячно работать, если вдруг вам придется int16 туда засунуть. Не переписывать же функцию под каждый чих, а так int64 и потом только int8 будет хранится
Есть простой способ конвертировать что угодно в строку fmt.Sprint() обратно fmt.Sscan(). Вся машинерия спрятана за сценой, но она довольно тяжелая там за сценой. playground