Набор состояний в блоке констант в Go
Имена состояний удобно пронумеровать в одном блоке, чтобы не писать числа вручную. Так задают этапы письма, статус заказа или шаг обработки: каждое имя получает свой номер, а в переменной хранят одно из этих значений.
Три типичных состояния оформляют так:
const (
Draft = iota
Sent
Done
)
status := Sent
fmt.Println(status)
Draft равно 0, Sent равно
1, Done равно 2. В
status лежит число 1, то есть
выбрано состояние Sent. Сравнение
идет с именем константы, а не с голым числом
в тексте программы.
Блок можно объявить и внутри функции, если набор состояний нужен только там:
func main() {
const (
Draft = iota
Sent
Done
)
step := Done
fmt.Println(step == Done)
}
Дан следующий код:
const (
Open = iota
Closed
)
flag := Open
Напишите значение flag и сравнение,
которое проверяет, что флаг открыт.
Даны состояния New, Active,
Archived. Пронумеруйте их с нуля
в одном блоке и запишите в phase
значение Active.
Дан следующий код:
const (
Draft = iota
Sent
Done
)
cur := 2
Скажите, какому имени состояния соответствует
cur, не меняя блок.