Go: часть 5 – константы

 

Предыдущая часть – 4 – переменные.

Константы являются фиксированными значениями, которые программа не может изменять после запуска. Сами значения так же называют литералами.

Тут стоит сразу оговориться:

  • константа: это имя, которое ссылается/содержит значение
  • литерал: это само значение

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

Константы используются аналогично переменными, с той лишь разницей, что их значение нельзя изменить во время выполнения.

Целочисленные литералы

Целочисленные литералы (integer literal) могут быть десятичными, восьмеричными или шестнадцатеричными константами. Префикс определяет основание системы исчисления или radix: 0x или 0X для шестнадцатеричных, 0 для восьмеричных или ничего для десятеричных типов.

Такой литерал так же может иметь суффикс в виде комбинации U и L для беззнаковых (unsigned) и L(long) соответственно. Суффикс может быть указан в любом регистре (заглавными или строчными буквами) и расположен в любом порядке.

Примеры целочисленных литералов:

212         /* Legal */
215u        /* Legal */
0xFeeL      /* Legal */
078         /* Illegal: 8 is not an octal digit */
032UU       /* Illegal: cannot repeat a suffix */
85         /* decimal */
0213       /* octal */
0x4b       /* hexadecimal */
30         /* int */
30u        /* unsigned int */
30l        /* long */
30ul       /* unsigned long */

Литералы с плавающей точкой

Литералы с плавающей точкой (floating-point literals) имеют целочисленную часть, десятичный разделитель, точку и экспоненциальную часть. Вы можете представлять такие литералы как в десятичном, так и в экспоненциальном виде.

При указании литерала используя десятичную форму – вы должны включить в неё десятичную точку и/или експоненту.  При использовании экспоненциальной формы – указывается целочисленная часть и/или дробная часть. Знаковая экспонента обозначается буквой e или E.

Примеры:

3.14159       /* Legal */
314159E-5L    /* Legal */
510E          /* Illegal: incomplete exponent */
210f          /* Illegal: no decimal or exponent */
.e55          /* Illegal: missing integer or fraction */

Escape-последовательности

Когда перед определёнными символами установлен обратный слеш “\” – они будут иметь специальное значение для Go, и известны как “escape-последовательности”. Наиболее известные из них – это символ новой строки “\n“, табуляции “\t“, возврата каретки и т.д.

Список наиболее полезных из них:

Escape sequence Meaning
\\ \ character
\’ ‘ character
\” ” character
\? ? character
\a Alert or bell
\b Backspace
\f Form feed
\n Newline
\r Carriage return
\t Horizontal tab
\v Vertical tab
\ooo Octal number of one to three digits
\xhh . . . Hexadecimal number of one or more digits

Пример использования табуляции и новой строки в коде:

package main

import "fmt"

func main() {
   fmt.Printf("Hello\tWorld!\n")
}

Результат:

$ go run tab.go 
Hello   World!

Строковые литералы в Go

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

Примеры строкового литерала, используя разные формы представления:

 

"hello, dear"

"hello, \

dear"

"hello, " "d" "ear"

Ключевое слово const

Вы можете использвать префикс const для объявления константы определённого типа:

const variable type = value;

Например:

package main

import "fmt"

func main() {
   const LENGTH int = 10
   const WIDTH int = 5   
   var area int

   area = LENGTH * WIDTH
   fmt.Printf("value of area : %d\n", area)   
}

Результат:

$ go run const.go 
value of area : 50

Продолжение – часть 6 – операторы.