cpp

Константы

Константы — это области памяти, значения в которых не должны изменяться во время работы программы. В более широком смысле под константой понимают любое значение, которое нельзя изменить, например, 10, 12.5, 'W', "string".

При объявлении константы указывается ключевое слово const:

const <Переменная>[ <Тип>] = <Значение>

Пример:

const MyConst int = 10
fmt.Println(MyConst)  // 10

После объявления константы, ее можно использовать в выражениях:

const MyConst int = 10
var x int
x = MyConst + 20
fmt.Println(x)  // 30

Присвоить значение константе можно только при объявлении. Причем присваиваемое значение должно быть константным. Любая попытка изменения значения в программе приведет к ошибке при компиляции:

const MyConst int = 10
MyConst = 20           // Ошибка!
// cannot assign to MyConst (declared const)

При объявлении константы можно опустить указание типа данных:

const MyConst = 10
fmt.Printf("%T\n", MyConst) // int

В этом случае можно использовать константу в любых допустимых выражениях, даже при несовпадении типов. Тип данных будет преобразован автоматически:

const MyConst = 10
var x float64 = 12.5
x = x + MyConst
fmt.Printf("%T\n", MyConst)  // int
fmt.Println(x)               // 22.5

Если мы изменим первую инструкцию так:

const MyConst int = 10

то получим ошибку несоответствия типов:

invalid operation: x + MyConst (mismatched types float64 and int)

Для объявления сразу нескольких констант в одной инструкции можно воспользоваться следующим форматом:

const <Переменная 1>[, ..., <Переменная N>][ <Тип>] = <Значение 1>[,
                                                   ..., <Значение N>]

Пример:

const a, b int = 10, 20
fmt.Println(a)               // 10
fmt.Println(b)               // 20

Можно также воспользоваться следующим синтаксисом:

const (
   <Переменная 1>[ <Тип>][ = <Значение 1>]
   [...
   <Переменная N>][ <Тип>][ = <Значение N>]]
)

Пример:

const (
   a int = 10
   b float64 = 20.5
)
fmt.Println(a)               // 10
fmt.Println(b)               // 20.5

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

const (
   a, b int = 10, 20
   x, y = 30, 40
)
fmt.Println(a, b)            // 10 20
fmt.Println(x, y)            // 30 40

Если первой константе присвоить начальное значение, то остальные не типизированные константы без начального значения будут иметь то же самое значение:

const (
   a = 10
   b
   c
)
fmt.Println(a, b, c)         // 10 10 10

Внутри блока можно использовать специальную переменную iota, которая изначально имеет значение 0. При переходе к каждой последующей константе значение iota увеличивается на единицу:

const (
   a = iota
   b
   c
)
fmt.Println(a, b, c)         // 0 1 2

Переменную iota можно использовать в составе выражения. Присвоим константам значения, соответствующие степеням двойки:

const (
   a = 1 << iota
   b
   c
)
fmt.Println(a, b, c)         // 1 2 4
fmt.Printf("%b\n", a)        // 1
fmt.Printf("%b\n", b)        // 10
fmt.Printf("%b\n", c)        // 100

Учебник Go (Golang)
Учебник Go (Golang) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

cpp