Enumérateur en Go

Jay Singh 30 janvier 2023
  1. Utilisez le iota pour représenter les enums dans Go
  2. Utilisez le iota pour auto-incrémenter la déclaration de nombre dans Go
  3. Utilisez le iota pour créer un comportement commun dans Go
Enumérateur en Go

Un enum (abréviation de enumerator) est utilisé pour concevoir des groupements complexes de constantes avec des noms significatifs mais des valeurs simples et distinctes.

En Go, il n’y a pas de type de données enum. Nous utilisons l’identifiant iota qui est prédéfini, et les enums ne sont pas strictement typées.

Utilisez le iota pour représenter les enums dans Go

iota est un identifiant constant qui peut simplifier les déclarations de nombre à incrémentation automatique. Il désigne une constante entière de base zéro.

Le mot-clé iota représente les constantes numériques 0, 1, 2,.... Le terme const apparaît dans le code source remis à 0 et augmente à chaque spécification const.

package main
import "fmt"

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

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

Production:

0 1 2

Utilisez le iota pour auto-incrémenter la déclaration de nombre dans Go

En utilisant cette méthode, vous pouvez éviter de placer des iota séquentiels devant chaque constante.

package main
import "fmt"

const (
	a = iota
	b
	c
)

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

Production:

0 1 2

Utilisez le iota pour créer un comportement commun dans Go

On définit une simple enum nommée Direction, qui a quatre valeurs potentielles : "east", "west", "north" et "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())
}

Production:

West
West
2