iota
— это специальный идентификатор в Go, который используется для создания последовательных числовых констант в блоках const
. Это мощный инструмент для объявления перечислений (enums) и последовательных значений.
const (
Zero = iota // 0
One // 1
Two // 2
)
const
const (
_ = iota + 5 // пропускаем первое значение
Five // 5
Six // 6
)
const (
A = iota // 0
_ // пропуск (1)
B // 2
C // 3
)
const (
Read = 1 << iota // 1 (0b001)
Write // 2 (0b010)
Execute // 4 (0b100)
)
const (
KB = 1 << (10 * iota) // 1 << (10*0) = 1
MB // 1 << (10*1) = 1024
GB // 1 << (10*2) = 1048576
)
Сброс значения:
const (
X = iota // 0
Y // 1
)
const (
Z = iota // снова 0
)
Не обязательно первое значение:
const (
Alpha = 10
Beta = iota // 1 (не 0!)
Gamma // 2
)
Можно использовать в выражениях:
const (
P = iota * 2 // 0
Q // 2
R // 4
)
package main
import "fmt"
const (
Sunday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
func main() {
fmt.Println(Monday, Wednesday, Friday) // Вывод: 1 3 5
}
iota
— счетчик для генерации последовательных константconst
const