Golang Enum

Golang Enum
En enum, forkortelse for enumerator, er en spesielle data som brukes til å erklære et sett med navngitte konstante variabler. Ved hjelp av enums kan vi lage et sett med komplekse konstanter med beskrivende variabelnavn og unike verdier.

La oss diskutere hvordan vi kan jobbe med tellere i Go.

Golang Enum

Syntaksen for å erklære en enum i Go er som vist:

Skriv enum_namedata_type
const (
variabelenum_name = iota
variabel2
variabel3
..
)

Anta at vi vil representere dagene i en uke. Den mest grunnleggende metoden er å lage en kartlegging av de ønskede verdiene.

Et eksempel:

const (
Søndag Int = 1
Mandag = 2
Tirsdag = 3
Onsdag = 4
Torsdag = 5
Fredag ​​= 6
Lørdag = 7
)

Vi kan også representere dagene som en strengkartlegging som vist:

const (
Søndagsstreng = "Sol"
Mandag = "man"
Tirsdag = "Tirsdag"
Onsdag = "ons"
Torsdag = "Thur"
Fredag ​​= "Fre"
Lørdag = "Sat"
)

Nå kan du spørre? Hva er galt med å representere ukens dager som vist ovenfor? For det første virker det repeterende og veldig utsatt for konflikter.

Anta for eksempel at vi har to enums som:

// en
const (
Søndag Int = 1
Mandag = 2
Tirsdag = 3
Onsdag = 4
Torsdag = 5
Fredag ​​= 6
Lørdag = 7
)
// to
const (
driver int = 1
Kokk = 2
)

Hvis vi ser etter sammenligning, som:

fmt.Println (søndag == Driver)

Koden returnerer sann. Dette skal ikke være tilfelle.

Vi kan fikse dette ved å lage en enum som beskriver ukens dager. Et eksempelkode er som vist:

pakkehoved
FUNCMAIN ()
Type DaysOfWeek Int64
const (
Søndagsdager avweek = 1
Mandag = 2
Tirsdag = 3
Onsdag = 4
Torsdag = 5
Fredag ​​= 6
Lørdag = 7
)

Her definerer vi en ny type kalt DaysOfWeek () med et heltall som basetype. Dette hjelper til med å definere CONST -verdiene som deres type.

For å sikre unikhet i verdiene, kan vi bruke IOTA -nøkkelordet. Nøkkelordet vil lage et påfølgende sett med unike konstante verdier:

pakkehoved
Importer "FMT"
FUNCMAIN ()
Type DaysOfWeek Int64
const (
Søndagsdager avweek = iota
mandag
tirsdag
onsdag
Torsdag
fredag
lørdag
)

Den forrige koden erstatter verdiene med et sett med påfølgende heltallverdier.

Når vi erklærer en enum, kan vi lage en variabel av den typen som vist:

pakkehoved
Importer "FMT"
FUNCMAIN ()
typedaysofweekint64
const (
Søndagsdager avweek = iota
mandag
tirsdag
onsdag
Torsdag
fredag
lørdag
)
var d Daysofweek
D = torsdag
if (d == torsdag)
fmt.Println ("Ukens dag:", D)

I forrige kode erklærer vi en variabel D med Type DaysOfWeek (). Vi tildeler deretter verdien til typen. Deretter kan vi sjekke om verdien er lik en av enum.

Den resulterende utgangen er som:

Uken: 4

Enum strengmetode

Anta at vi vil legge til en mer beskrivende melding. Vi kan legge til en metode for DaysOfWeek -typen som vist:

pakkehoved
Importer "FMT"
typedaysofweekint64
const (
Søndagsdager avweek = iota
mandag
tirsdag
onsdag
Torsdag
fredag
lørdag
)
func (d DaysOfWeek) String () String
Return [] String "Sunday", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Saturday" [D]

FUNCMAIN ()
var day dayofweek = torsdag
Switch Day
Sak søndag:
fmt.Println ("Søndag")
Sak mandag:
fmt.Println ("Mandag")
Sak tirsdag:
fmt.Println ("Tirsdag")
Sak onsdag:
fmt.Println ("onsdag")
Sak torsdag:
fmt.Println ("Torsdag")
Sak fredag:
fmt.Println ("Fredag")
Sak lørdag:
fmt.Println ("Saturday")
misligholde:
fmt.Println ("Ugyldig dag")

Å bruke String () -metoden er veldig nyttig, da den gjør det mulig å implementere utskriftsbarheten til en streng i stedet for å lage en enum -type.

Enum hopp over verdien

Hvis du vil hoppe over en verdi i listen over konstanter, kan du bruke en tom identifikator som vist:

Type DaysOfWeek Int64
const (
SundayDaysOfWeek = Iota
mandag
_
onsdag
Torsdag
fredag
lørdag
)

Konklusjon

Denne guiden dekker implementering og samarbeid med tellere i Go -programmeringsspråket. I tillegg ble Enum String -metoden og enumhoppverdiene diskutert med eksempler. Vi håper du fant denne artikkelen nyttig. Sjekk ut andre Linux -hint -artikler for flere tips og opplæringsprogrammer.