Enumerador en Go

Jay Singh 30 enero 2023
  1. Use el iota para representar enums en Go
  2. Utilice la iota para la declaración de número de incremento automático en Go
  3. Usa el iota para crear un comportamiento común en Go
Enumerador en Go

Se utiliza un enum (abreviatura de enumerador) para diseñar agrupaciones complicadas de constantes con nombres significativos pero valores simples y distintos.

En Go, no existe el tipo de datos enum. Usamos el identificador iota que está predefinido, y los enums no están estrechamente tipados.

Use el iota para representar enums en Go

iota es un identificador constante que puede simplificar las declaraciones de números de incremento automático. Denota una constante entera de base cero.

La palabra clave iota representa las constantes numéricas 0, 1, 2,.... El término const que aparece en el código fuente se restablece a 0 y aumenta con cada especificación de const.

package main
import "fmt"

const (
	a = iota
	b = iota
	c = iota
)

func main() {
	fmt.Println(a, b, c)
}

Producción :

0 1 2

Utilice la iota para la declaración de número de incremento automático en Go

Con este método, puede evitar colocar iota secuencial delante de cada constante.

package main
import "fmt"

const (
	a = iota
	b
	c
)

func main() {
	fmt.Println(a, b, c)
}

Producción :

0 1 2

Usa el iota para crear un comportamiento común en Go

Definimos una enum simple denominada Direction, que tiene cuatro valores potenciales: "east", "west", "north" y "south".

package main
import "fmt"
type Direction int
const (
	East = iota + 1
	West
	North
	South
)
// Giving the type a String method to create common behavior
func (d Direction) String() string {
	return [...]string{"East", "West", "North", "South"}[d-1]
}
// Giving the type an EnumIndex function allows you to provide common behavior.
func (d Direction) EnumIndex() int {
	return int(d)}

func main() {
	var d Direction = West
	fmt.Println(d)
	fmt.Println(d.String())
	fmt.Println(d.EnumIndex())
}

Producción :

West
West
2