Golang Enum

Golang Enum
Uma enumeração, abreviação do Enumerator, é um dados especial usado para declarar um conjunto de variáveis ​​constantes nomeadas. Usando enums, podemos criar um conjunto de constantes complexas com nomes de variáveis ​​descritivos e valores únicos.

Vamos discutir como trabalhar com enumeradores em Go.

Golang Enum

A sintaxe para declarar uma enumeração em Go é como mostrado:

Tipo enum_namedata_type
const (
variableenum_name = iota
variável2
variável3
..
)

Suponha que queremos representar os dias de uma semana. O método mais básico é criar um mapeamento dos valores desejados.

Um exemplo:

const (
Domingo int = 1
Segunda -feira = 2
Terça -feira = 3
Quarta -feira = 4
Quinta -feira = 5
Sexta -feira = 6
Sábado = 7
)

Também podemos representar os dias como um mapeamento de string como mostrado:

const (
Domingo String = "Sun"
Segunda -feira = "seg"
Terça -feira = "Ter"
Quarta -feira = "quarta"
Quinta -feira = "Thur"
Sexta -feira = "sex"
Sábado = "Sáb"
)

Agora, você pode perguntar? O que há de errado em representar os dias da semana, como mostrado acima? Primeiro, parece repetitivo e muito propenso a conflitos.

Por exemplo, suponha que tenhamos duas enumes como:

// um
const (
Domingo int = 1
Segunda -feira = 2
Terça -feira = 3
Quarta -feira = 4
Quinta -feira = 5
Sexta -feira = 6
Sábado = 7
)
// dois
const (
driver int = 1
Chef = 2
)

Se verificarmos a comparação, como:

fmt.Println (domingo == driver)

O código retorna verdadeiro. Este não deve ser o caso.

Podemos consertar isso criando uma enumeração descrevendo os dias da semana. Um código de exemplo é como mostrado:

Pacote principal
funcmain ()
Dias do tipo de semana Int64
const (
Domingo DaysOfWeek = 1
Segunda -feira = 2
Terça -feira = 3
Quarta -feira = 4
Quinta -feira = 5
Sexta -feira = 6
Sábado = 7
)

Aqui, definimos um novo tipo chamado DaysOfWeek () com um número inteiro como o tipo de base. Isso ajuda a definir os valores const como seu tipo.

Para garantir a singularidade nos valores, podemos usar a palavra -chave IOTA. A palavra -chave criará um conjunto sucessivo de valores constantes exclusivos:

Pacote principal
importar "fmt"
funcmain ()
Dias do tipo de semana Int64
const (
Domingo DaysOfWeek = iota
Segunda-feira
Terça-feira
Quarta-feira
Quinta-feira
Sexta-feira
Sábado
)

O código anterior substitui os valores por um conjunto de valores inteiros sucessivos.

Depois de declararmos uma enumeração, podemos criar uma variável desse tipo como mostrado:

Pacote principal
importar "fmt"
funcmain ()
typeDedaysofWeekInt64
const (
Domingo DaysOfWeek = iota
Segunda-feira
Terça-feira
Quarta-feira
Quinta-feira
Sexta-feira
Sábado
)
Var D DaysOfWeek
d = quinta -feira
if (d == quinta -feira)
fmt.Println ("Dia da semana:", d)

No código anterior, declaramos uma variável d com o tipo DaysOfWeek (). Em seguida, atribuímos o valor ao tipo. Em seguida, podemos verificar se o valor é igual a um dos enum.

A saída resultante é como:

Dia da semana: 4

Método da String Enum

Suponha que queremos adicionar uma mensagem mais descritiva. Podemos adicionar um método para o tipo de semana, como mostrado:

Pacote principal
importar "fmt"
typeDedaysofWeekInt64
const (
Domingo DaysOfWeek = iota
Segunda-feira
Terça-feira
Quarta-feira
Quinta-feira
Sexta-feira
Sábado
)
func (d diasfweek) string () string
Return [] String "Sunday", "Segunda -feira", "Terça -feira", "Quarta -feira", "Quinta

funcmain ()
var dia diasfweek = quinta -feira
Dia do interruptor
Caso domingo:
fmt.Println ("domingo")
Caso segunda -feira:
fmt.Println ("segunda -feira")
Caso terça -feira:
fmt.Println ("terça")
Caso quarta -feira:
fmt.Println ("quarta -feira")
Caso quinta -feira:
fmt.Println ("quinta -feira")
Caso sexta -feira:
fmt.Println ("sexta -feira")
Caso sábado:
fmt.Println ("sábado")
padrão:
fmt.Println ("Dia inválido")

O uso do método string () é muito útil, pois permite implementar a impressão de uma string em vez de criar um tipo de enumeração.

Enum pular valor

Se você deseja pular um valor na lista de constantes, pode usar um identificador em branco como mostrado:

Dias do tipo de semana Int64
const (
SundayDaysOfWeek = IOTA
Segunda-feira
_
Quarta-feira
Quinta-feira
Sexta-feira
Sábado
)

Conclusão

Este guia abrange a implementação e o trabalho com enumeradores na linguagem de programação Go. Além disso, o método enum string e os valores de pular enum foram discutidos com exemplos. Esperamos que você tenha achado este artigo útil. Confira outros artigos de dica do Linux para obter mais dicas e tutoriais.