В Go (Golang) нет встроенного типа для перечислений, как в некоторых других языках программирования. Однако мы можем смоделировать перечисление, используя набор констант, и определить для них методы, чтобы обеспечить дополнительную функциональность. Вот пример:
package main
import "fmt"
type Status int
const (
Pending Status = iota
Approved
Rejected
)
func (s Status) String() string {
names := [...]string{
"Pending",
"Approved",
"Rejected",
}
if s < Pending || s > Rejected {
return "Unknown"
}
return names[s]
}
func main() {
status := Approved
fmt.Println(status.String()) // Output: "Approved"
}
В этом примере мы определяем пользовательский тип Statusс базовым типом int. Затем мы определяем набор констант (Ожидание, Одобренои Отклонено) типа Statusс помощью Ключевое слово >const. По умолчанию константам присваиваются значения, начиная с 0 (Ожидание) и увеличиваясь на 1.
Мы также определяем метод String()для типа Status, который возвращает строковое представление значения статуса. Этот метод позволяет нам преобразовать значение Statusв удобочитаемую строку. Мы используем массив имен, соответствующих константам, и возвращаем соответствующее имя на основе значения s.
Наконец, в функции main()мы создаем переменную statusи присваиваем ей значение Approved. Затем мы вызываем метод String()для status, чтобы распечатать его строковое представление.