Публикации - Go

Типы данных - Основные типы данных, однотипные - Константы

Константы, как и переменные, хранят некоторые данные, но в отличие от переменных значения констант нельзя изменить, они устанавливаются один раз. Вычисление констант производится во время компиляции. Благодаря этому уменьшается количество работы, которую необходимо произвести во время выполнения, упрощается поиск ошибок, связанных с константами (так как некоторые из них можно обнаружить на момент компиляции).

Для определения констант применяется ключевое слово const:

const pi float64 = 3.1415

И в отличие от переменной мы не можем изменить значение константы. А если и попробуем это сделать, то при компиляции мы получим ошибку:

const pi float64 = 3.1415
pi = 2.7182             // ! Ошибка

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

const (
    pi float64 = 3.1415
    e float64 = 2.7182
)

или

const pi, e = 3.1415, 2.7182

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

const n = 5     //  тип int

В то же время необходимо обязательно инициализировать константу начальным значением при ее объявлении.

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

const (
    a = 1
    b
    c
    d = 3
    f
)
fmt.Println(a, b, c, d, f)      // 1, 1, 1, 3, 3

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

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

package main

import (
	"fmt"
)
 
func main() {
 
	const (
		Zero int = iota
		One
		Two
		Three
		Four
	)

	fmt.Println(One)
	fmt.Println(Two)
	fmt.Println(Three)
	fmt.Println(Four)
}

Сохраните данный исходник в файл constants.go и запустите:

go run constants.go

получим:

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

	const (
		Zero int = iota
		_
		One
		_
		Two
		_
		Three
		_
		Four
	)

При запуске программы получим:

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться