Golang enum

Golang enum
Un enum, abbreviazione di enumeratore, è un dati speciali utilizzati per dichiarare un insieme di variabili costanti denominate. Usando Enums, possiamo creare un insieme di costanti complesse con nomi di variabili descrittivi e valori univoci.

Discutiamo come lavorare con gli enumeratori in Go.

Golang enum

La sintassi per dichiarare un enum in go è come mostrato:

Digita enum_namedata_type
const (
variabileenum_name = Iota
variabile2
variabile3
..
)

Supponiamo di voler rappresentare i giorni di una settimana. Il metodo più elementare è creare una mappatura dei valori desiderati.

Un esempio:

const (
Domenica int = 1
Lunedì = 2
Martedì = 3
Mercoledì = 4
Giovedì = 5
Venerdì = 6
Sabato = 7
)

Possiamo anche rappresentare i giorni come mappatura delle stringhe come mostrato:

const (
Sunday String = "Sun"
Lunedì = "mon"
Martedì = "mar"
Mercoledì = "mer
Giovedì = "Thur"
Venerdì = "ven"
Sabato = "sat"
)

Ora potresti chiedere? Cosa c'è di sbagliato nel rappresentare i giorni della settimana come mostrato sopra? Innanzitutto, sembra ripetitivo e molto incline ai conflitti.

Ad esempio, supponiamo di avere due enum come:

// uno
const (
Domenica int = 1
Lunedì = 2
Martedì = 3
Mercoledì = 4
Giovedì = 5
Venerdì = 6
Sabato = 7
)
// due
const (
driver int = 1
Chef = 2
)

Se controlliamo il confronto, come:

fmt.Println (domenica == Driver)

Il codice restituisce vero. Questo non dovrebbe essere il caso.

Possiamo risolvere questo problema creando un enum che descrive i giorni della settimana. Un codice di esempio è come mostrato:

Pacchetto principale
funcmain ()
Tipo DaysofWeek Int64
const (
Domenica DaysOfWeek = 1
Lunedì = 2
Martedì = 3
Mercoledì = 4
Giovedì = 5
Venerdì = 6
Sabato = 7
)

Qui, definiamo un nuovo tipo chiamato DaySofWeek () con un numero intero come tipo di base. Questo aiuta a definire i valori const come il loro tipo.

Per garantire unicità nei valori, possiamo usare la parola chiave Iota. La parola chiave creerà un set successivo di valori costanti unici:

Pacchetto principale
Importa "FMT"
funcmain ()
Tipo DaysofWeek Int64
const (
Domenica DaysOfWeek = Iota
Lunedi
Martedì
Mercoledì
Giovedì
Venerdì
Sabato
)

Il codice precedente sostituisce i valori con una serie di valori interi successivi.

Una volta che dichiariamo un enum, possiamo creare una variabile di quel tipo come mostrato:

Pacchetto principale
Importa "FMT"
funcmain ()
typeDayaysofweekint64
const (
Domenica DaysOfWeek = Iota
Lunedi
Martedì
Mercoledì
Giovedì
Venerdì
Sabato
)
Var d Daysofweek
d = giovedì
if (d == giovedì)
fmt.Println ("Day of the Week:", D)

Nel codice precedente, dichiariamo una variabile D con tipo DaySofWeek (). Quindi assegniamo il valore al tipo. Successivamente, possiamo verificare se il valore è uguale a uno degli enum.

L'output risultante è come:

Giorno della settimana: 4

Metodo della stringa enum

Supponiamo di voler aggiungere un messaggio più descrittivo. Possiamo aggiungere un metodo per il tipo DaysofWeek come mostrato:

Pacchetto principale
Importa "FMT"
typeDayaysofweekint64
const (
Domenica DaysOfWeek = Iota
Lunedi
Martedì
Mercoledì
Giovedì
Venerdì
Sabato
)
func (d daysofweek) string () string
return [] string "domenica", "lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato" [d]

funcmain ()
VAR Day DaysOfWeek = giovedì
Switch Day
Caso domenica:
fmt.Println ("domenica")
Caso lunedì:
fmt.Println ("lunedì")
Caso martedì:
fmt.Println ("martedì")
Caso mercoledì:
fmt.Println ("mercoledì")
Caso giovedì:
fmt.Println ("giovedì")
Caso venerdì:
fmt.Println ("venerdì")
Caso sabato:
fmt.Println ("sabato")
predefinito:
fmt.Println ("giorno non valido")

L'uso del metodo String () è molto utile in quanto consente di implementare la stampabilità di una stringa invece di creare un tipo ENUM.

Enum salta il valore

Se si desidera saltare un valore nell'elenco delle costanti, è possibile utilizzare un identificatore vuoto come mostrato:

Tipo DaysofWeek Int64
const (
SundayDaySofWeek = Iota
Lunedi
_
Mercoledì
Giovedì
Venerdì
Sabato
)

Conclusione

Questa guida copre l'implementazione e il lavoro con gli enumeratori nel linguaggio di programmazione Go. Inoltre, il metodo String Enum e i valori di Skip Enum sono stati discussi con esempi. Speriamo che tu abbia trovato questo articolo utile. Dai un'occhiata ad altri articoli di suggerimento Linux per ulteriori suggerimenti e tutorial.