Golang enum

Golang enum
Enum, skrót od wyliczania, to specjalne dane używane do deklarowania zestawu nazwanych zmiennych stałych. Za pomocą wyliczania możemy utworzyć zestaw złożonych stałych o nazwach zmiennych opisowych i unikalnych wartości.

Omówmy, jak pracować z enumeratorami w Go.

Golang enum

Składnia deklarowania enum w Go jest jak pokazano:

Typ enum_namedata_type
const (
varibleenum_name = IOTA
zmienna2
zmienna3

)

Załóżmy, że chcemy reprezentować dni tygodnia. Najbardziej podstawową metodą jest utworzenie mapowania pożądanych wartości.

Przykład:

const (
Niedziela int = 1
Poniedziałek = 2
Wtorek = 3
Środa = 4
Czwartek = 5
Piątek = 6
Sobota = 7
)

Możemy również reprezentować dni jako mapowanie ciągów, jak pokazano:

const (
Sunday String = „Sun”
Poniedziałek = „mon”
Wtorek = „Wt”
Środa = „śr”
Czwartek = „Thur”
Piątek = „pt”
Sobota = "sat"
)

Teraz możesz zapytać? Co jest złego w reprezentowaniu dni tygodnia, jak pokazano powyżej? Po pierwsze, wydaje się powtarzalne i bardzo podatne na konflikty.

Załóżmy na przykład, że mamy dwa wyliczenia jako:

// jeden
const (
Niedziela int = 1
Poniedziałek = 2
Wtorek = 3
Środa = 4
Czwartek = 5
Piątek = 6
Sobota = 7
)
// dwa
const (
sterownik int = 1
Chef = 2
)

Jeśli sprawdzimy porównanie, jako:

fmt.Println (niedziela == sterownik)

Kod zwraca prawdziwie. Nie powinno tak być.

Możemy to naprawić, tworząc wyliczenie opisujące dni tygodnia. Przykładowy kod jest taki jak pokazano:

Pakiet Main
funcMain ()
Typ DaysofWeek Int64
const (
Niedzielne dni twok = 1
Poniedziałek = 2
Wtorek = 3
Środa = 4
Czwartek = 5
Piątek = 6
Sobota = 7
)

Tutaj definiujemy nowy typ o nazwie DaysofWeek () z liczbą całkowitą jako typ podstawowy. Pomaga to zdefiniować wartości const jako ich typu.

Aby zapewnić wyjątkowość w wartościach, możemy użyć słowa kluczowego IOTA. Słowo kluczowe stworzy kolejne zestaw unikalnych stałych wartości:

Pakiet Main
importować „fmt”
funcMain ()
Typ DaysofWeek Int64
const (
Niedziel
Poniedziałek
Wtorek
Środa
Czwartek
Piątek
Sobota
)

Poprzedni kod zastępuje wartości zestawem kolejnych wartości liczb całkowitych.

Po ogłoszeniu enum możemy utworzyć zmienną tego typu, jak pokazano:

Pakiet Main
importować „fmt”
funcMain ()
Typedaysofweekint64
const (
Niedziel
Poniedziałek
Wtorek
Środa
Czwartek
Piątek
Sobota
)
VAR D DAYSOFWEEK
D = czwartek
if (d == czwartek)
fmt.Println („Dzień tygodnia:”, d)

W poprzednim kodzie deklarujemy zmienną D z typem DaysofWeek (). Następnie przypisujemy wartość do typu. Następnie możemy sprawdzić, czy wartość jest równa jednemu z enum.

Powstałe wyjście to:

Dzień tygodnia: 4

Metoda String Enum

Załóżmy, że chcemy dodać bardziej opisową wiadomość. Możemy dodać metodę dla typu dni, jak pokazano:

Pakiet Main
importować „fmt”
Typedaysofweekint64
const (
Niedziel
Poniedziałek
Wtorek
Środa
Czwartek
Piątek
Sobota
)
FUNC (D DaysofWeek) String () String
powrót [] ciąg „niedziela”, „poniedziałek”, „wtorek”, „środa”, „czwartek”, „piątek”, „sobota” [d]

funcMain ()
var Day DaysofWeek = czwartek
Switch Day
przypadek niedziela:
fmt.Println („niedziela”)
Przypadek poniedziałkowy:
fmt.Println („poniedziałek”)
Sprawa we wtorek:
fmt.Println („wtorek”)
Sprawa środowa:
fmt.Println („środa”)
Sprawa czwartkowa:
fmt.Println („czwartek”)
Przypadek piątek:
fmt.Println („piątek”)
Sprawa sobota:
fmt.Println („sobota”)
domyślny:
fmt.Println („Nieprawidłowy dzień”)

Za pomocą metody String () jest bardzo przydatne, ponieważ pozwala zaimplementować wydrukowanie łańcucha zamiast tworzenia typu enum.

Enum pomiń wartość

Jeśli chcesz pominąć wartość na liście stałych, możesz użyć pustego identyfikatora, jak pokazano:

Typ DaysofWeek Int64
const (
SundayDaysofWeek = IOTA
Poniedziałek
_
Środa
Czwartek
Piątek
Sobota
)

Wniosek

Niniejszy przewodnik obejmuje wdrażanie i pracę z wyliczającymi w języku programowania Go. Ponadto metoda ciągów enum i wartości pomijania enum zostały omówione z przykładami. Mamy nadzieję, że ten artykuł jest pomocny. Sprawdź inne artykuły w Linux, aby uzyskać więcej wskazówek i samouczków.