Golang: Criando um tipo constante e restringindo os valores do tipo
Eu tenho uma pergunta sobre tipos de constantes que são restritas a certos valores e como você consegue isso em Golang. Digamos que eu crie um tipounary
que tem dois valores constantesPositive(1)
eNegative(-1)
e quero restringir o usuário desse tipo (unary
) de criar outros valores do tipounary
. Consigo isso criando um pacote e fazendo os valoresPositive
eNegative
visível e tornando o tipounary
restrito ao pacote que contém? Veja o código abaixo, por exemplo
package unary
type unary int////not visible outside of the package unary
const (
Positive unary = 1//visible outside of the package unary
Negative unary = -1//visible outside of the package unary
)
func (u unary) String() string {//visible outside of the package unary
if u == Positive {
return "+"
}
return "-"
}
func (u unary) CalExpr() int {//visible outside of the package unary
if u == Positive {
return 1
}
return -1
}
Essa é a maneira correta de restringir um tipo a certos valores constantes?