Формируйте цифры справа налево, работая в отрицательной области: она включает минимальный int, который нельзя безопасно превратить в положительный через обычное отрицание.
Конвертация целого числа в строку без стандартных пакетов
Формируйте цифры справа налево, работая в отрицательной области: она включает минимальный int, который нельзя безопасно превратить в положительный через обычное отрицание.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо реализовать функцию, которая преобразует целое число (int) в строковое представление (string) без применения пакетов fmt, strconv и strings.Builder. Функция должна корректно работать как с положительными, так и с отрицательными значениями, включая проверку граничных случаев: 0, минимальное и максимальное значение типа int.
Ответ
Формируйте цифры справа налево, работая в отрицательной области: она включает минимальный int, который нельзя безопасно превратить в положительный через обычное отрицание.
Функция без импортов для стандартных 32/64-битных int:
func intString(n int) string {
if n == 0 { return "0" }
negative := n < 0
if n > 0 { n = -n }
var buffer [20]byte
position := len(buffer)
for n != 0 {
position--
buffer[position] = byte('0' + -(n % 10))
n /= 10
}
if negative { position--; buffer[position] = '-' }
return string(buffer[position:])
}
Остаток имеет модуль меньше 10, поэтому его отрицание безопасно даже для минимального int. Время O(числа цифр), вспомогательный буфер фиксированный; результирующая строка создаётся отдельно.