Skip to content

Типизированные именованные константы

Мы можем объявлять типизированные константы, все типизированные константы именуются. В следующем примере все четыре объявленные константы являются типизированными значениями. Типы X и Y — float32, а типы A и B — int64.

Если в одной и той же спецификации константы объявлено несколько типизированных констант, то их типы должны быть такими же, как у констант A и B в приведенном выше примере.

Мы также можем использовать явные преобразования, чтобы предоставить компиляторам Go достаточно информации для вывода типов типизированных именованных констант. Приведенный выше фрагмент кода эквивалентен следующему, в котором X и  Y являются  типизированными константами AB.

Если литерал базового значения связан с типизированной константой, литерал базового значения должен быть представлен как значение типа константы. Следующие объявления типизированных констант недопустимы

В приведенном выше и следующем примерах c ^ используется побитовый оператор not.

Следующее объявление типизированной константы допустимо в 64-разрядных ОС, но недопустимо в 32-разрядных ОС. На каждое uint значение приходится только 32 бита на 32-битных ОС. (1 << 64) - 1 не представляется в виде 32-битных значений. Здесь << является оператором побитового сдвига влево.

Тогда как объявить типизированную uint константу и привязать к ней наибольшее uint значение? Вместо этого используй следующий способ.

Точно так же мы можем объявить типизированную int константу и привязать к ней наибольшее int значение. Здесь >> является оператором побитового сдвига вправо.

Аналогичный метод можно использовать для получения количества битов исходного слова и проверки того, является ли текущая ОС 32-разрядной или 64-разрядной.

Здесь != и \== — не-равно и равно-операторы.