|
|||||||
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 не нужно прописывать его ручками, снижается вероятность глупых ошибок |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|