MyTetra Share
Делитесь знаниями!
iota для объявления констант в Golang
Время создания: 05.11.2020 13:44
Автор: br0ke
Текстовые метки: go, golang, const, constant, constants, iota, enum, enums
Раздел: Информационные технологии - Golang
Запись: and-semakin/mytetra_data/master/base/1604565874hfr4y5id5u/text.html на raw.githubusercontent.com

iota -- это предопределенный идентификатор в языке Go, который в обычном контексте содержит в себе значение 0. Однако в блоках const этот идентификатор увеличивается для каждой следующей константы на единицу. Это позволяет более удобно создавать константы, значения которых предлставляют непрерывную последовательность чисел (этакий аналог enum перечислений, которых в Golang нет).


const (

Sunday = 0

Monday = 1

Tuesday = 2

Wednesday = 3

Thursday = 4

Friday = 5

Saturday = 6

)


fmt.Println(Sunday) // вывод 0

fmt.Println(Saturday) // вывод 6


Тот же пример с использованием iota:


const (

Sunday = iota

Monday

Tuesday

Wednesday

Thursday

Friday

Saturday

)


fmt.Println(Sunday) // вывод 0

fmt.Println(Saturday) // вывод 6



Ещё примеры с iota:


const (

c0 = iota // c0 == 0

c1 = iota // c1 == 1

c2 = iota // c2 == 2

)

fmt.Println(c0, c1, c2) // вывод: 0 1 2



const (

Sunday = iota

Monday

Tuesday

Wednesday

Thursday

Friday

Saturday

_ // пропускаем 7

Add

)


fmt.Println(Sunday) // вывод: 0

fmt.Println(Saturday) // вывод: 6

fmt.Println(Add) // вывод: 8




const (

u = iota * 42 // u == 0 (индекс - 0, поэтому 0 * 42 = 0)

v float64 = iota * 42 // v == 42.0 (индекс - 1, поэтому 1.0 * 42 = 42.0)

w = iota * 42 // w == 84 (индекс - 2, поэтому 2 * 42 = 84)

)


// переменные ни в одноме блоке const, поэтому индекс не увеличился

const x = iota // x == 0

const y = iota // y == 0



Ещё один пример с десятичными приставками:


type ByteSize float64


const (

_ = iota // ignore first value by assigning to blank identifier

KB ByteSize = 1 << (10 * iota)

MB

GB

TB

PB

EB

ZB

YB

)


fmt.Println(YB) // тут огромное число, с iota не нужно прописывать его ручками, снижается вероятность глупых ошибок

Так же в этом разделе:
 
MyTetra Share v.0.60
Яндекс индекс цитирования