2017-02-17 4 views
3

Существует int, int32, int64 в Golang.Почему тип int существует в Go

int32 has 32 bits, 
int64 has 64 bits, 
int has 32 or 64 or different number of bits according to the environment. 

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

А также в C++, тип int и тип long есть неопределенный длина. Я думаю, что это сделает нашу программу хрупкой. Я совершенно смущен.

ответ

4

Обычно размер int равен натуральному размеру слова цели. Поэтому, если ваша программа не заботится о размере int (минимальный размер int), он может наилучшим образом выполнять самые разнообразные компиляторы.

Когда вам нужен конкретный размер, вы можете, конечно, использовать int32 и т.д.

4

Обычно каждая платформа лучше всего работает с интегральным типом его родной размер.

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

С другой стороны, типы // полезны, если вам нужно, чтобы целое число было определенного размера. Это может быть полезно f.e. если вы хотите сохранить двоичные файлы (не забывайте о endiannes). Или если у вас есть большой массив целых чисел (которые будут только доходить до 32b значения), где экономия половину памяти будет значительным, и т.д.

0

В версиях Go до 1,0, int просто синоним int32 - 32-разрядное целое число. Поскольку int используется для индексирования срезов, это предотвращало использование фрагментов из более чем 2 миллиардов элементов или около того.

In Go 1.1, int was made 64 bits long on 64-bit platforms и, следовательно, достаточно большой, чтобы индексировать любой срез, который помещается в основную память. Поэтому:

  • int32 - тип 32-разрядных целых чисел;
  • int64 - тип 64-разрядных целых чисел;
  • int - наименьший целочисленный тип, который может индексировать все возможные фрагменты.

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

Смежные вопросы