Кастинг между типами чисел в golang - программирование
Подтвердить что ты не робот

Кастинг между типами чисел в golang

Может кто-нибудь скажет мне, если go поддерживает автоматическое литье числовых типов. Прямо сейчас мне приходится вручную преобразовывать результаты всех моих вычислений в int или int64 и отслеживать, какой числовой тип я использую.

4b9b3361

Ответ 1

Go не будет автоматически конвертировать числовые типы для вас.

Из спецификации языка:

Конверсии требуются, когда разные числовые типы смешиваются в выражение или назначение. Например, int32 и int не одного и того же типа, даже если они могут иметь одинаковый размер для определенного архитектура.

Ответ 2

Go не поддерживает неявные преобразования типов в числовом типе.

Обратитесь spec. Я думаю, что это по соображениям безопасности и предсказуемости. Еще одна вещь, которую я нашел, была немного странной/интересной, так это то, что вы не можете даже конвертировать из int в int32 неявно, что является странной причиной того, что оба имеют одинаковый размер.

type conversionerror

Ответ 3

Вам нужно преобразовать типы вручную, например.

var b byte = byte(x % 256);