Aufzählungszeichen in Go

Jay Singh 30 Januar 2023
  1. Verwenden Sie das iota, um enums in Go darzustellen
  2. Verwendung von iota zur automatischen Erhöhung von Zahlendeklarationen in Go
  3. Verwenden Sie das iota, um gemeinsames Verhalten in Go zu erstellen
Aufzählungszeichen in Go

Ein enum (kurz für Enumerator) wird verwendet, um komplizierte Gruppierungen von Konstanten mit aussagekräftigen Namen, aber einfachen und eindeutigen Werten zu entwerfen.

In Go gibt es keinen Datentyp enum. Wir verwenden den vordefinierten Bezeichner iota, und enums sind nicht streng typisiert.

Verwenden Sie das iota, um enums in Go darzustellen

iota ist ein konstanter Bezeichner, der Deklarationen von Auto-Increment-Zahlen vereinfachen kann. Es bezeichnet eine nullbasierte ganzzahlige Konstante.

Das Schlüsselwort iota repräsentiert die numerischen Konstanten 0, 1, 2,.... Der im Quellcode vorkommende Begriff const wird auf 0 zurückgesetzt und mit jeder const-Angabe erhöht.

package main
import "fmt"

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

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

Ausgabe:

0 1 2

Verwendung von iota zur automatischen Erhöhung von Zahlendeklarationen in Go

Mit dieser Methode können Sie vermeiden, dass vor jeder Konstante ein fortlaufendes iota steht.

package main
import "fmt"

const (
	a = iota
	b
	c
)

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

Ausgabe:

0 1 2

Verwenden Sie das iota, um gemeinsames Verhalten in Go zu erstellen

Wir definieren eine einfache Enumeration mit dem Namen Direction, die vier mögliche Werte hat: "east", "west", "north" und "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())
}

Ausgabe:

West
West
2