Юра

Юра  

Разработчик, спортсмен, гений

1subscriber

7posts

goals1
0 of 100 paid subscribers
Когда я наберу 100 подписчиков я смогу больше времени уделять контенту!

Как использовать ENUM в Golang и что такое "iota"

Для погружения в enum в языке GO для начала нужно узнать про перечисления в принципе.
"iota" - это ключевое слово в языке программирования Go, которое используется для генерации последовательности int'овых констант. Оно автоматически увеличивается на единицу для каждой последующей константы в блоке const, если не указано явное значение.
const (
       Red = iota // 0
       Green // 1
       Blue    // 2
)
const (
        _ = iota // пропуск первого значения
       KB = 1 << (10*iota) // 1 << (10*1) = 1024
       MB                           // 1 << (10*2) = 1048576
       GB                            // 1 << (10*3) = 1073741824
       TB                            // 1 << (10*4) = 1099511627776
)
const (
      Sunday = iota       // 0
      Monday                 // 1
      Tuesday =  5        // 5
      Wednesday          // 6
      Thursday             // 7
      Friday                  // 8
      Saturday             // 9
)
Как же использовать енумы, зачем они нужны?
type SessionState int
const (
        LoggedOut SessionState = iota
        LoggedIn
        Admin
        Suspended
)
func main() {
        fmt.Println(LoggedIn) // 1
        fmt.Println(Admin) // 2
        fmt.Println(Suspended) // 3
}
В этом примере мы определяем тип SessionState, который представляет состояние пользовательской сессии. Затем мы используем ключевое слово const для создания констант для каждого состояния. Константы начинаются с нуля и увеличиваются на единицу для каждого следующего состояния.
Перечисления в Go позволяют разработчикам создавать более понятный и безопасный код, так как они ограничивают множество возможных значений переменных и констант. Использование перечислений также помогает уменьшить количество ошибок в программном коде, связанных с опечатками или некорректным вводом данных.
В микросервисной архитектуре перечисления могут использоваться для определения списка возможных состояний для каждого сервиса. Например, для сервиса аутентификации можно определить перечисление SessionState с возможными состояниями входа в систему и выхода из нее. Таким образом, при разработке других сервисов, которые используют сервис аутентификации, разработчики будут знать, какие состояния могут иметь пользовательские сессии, и смогут разрабатывать свои сервисы, учитывая эти ограничения.
Например, сервис для работы с корзиной покупок может использовать перечисление CartState с возможными состояниями корзины, такими как Empty, HasItems, CheckedOut и т.д. При использовании такого перечисления другие сервисы будут знать, какие состояния могут иметь корзины и смогут соответствующим образом обрабатывать данные, связанные с корзиной покупок.
Go up