Типизированные именованные константы
Мы можем объявлять типизированные константы, все типизированные константы именуются. В следующем примере все четыре объявленные константы являются типизированными значениями. Типы 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-разрядной.
Здесь != и \== — не-равно и равно-операторы.