在Golang中不创建String()就能获取枚举名称吗
是否可以func (TheEnum) String() string
在Golang中创建而不获取Enum名称?
const ( MERCURY = 1
VENUS = iota
EARTH
MARS
JUPITER
SATURN
URANUS
NEPTUNE
PLUTO
)
还是有一种动态定义常量的方法?我发现了基于结构和基于字符串的两种方式,但是两种方式都使我们再次键入每个标签1次(或者复制粘贴,引用或使用编辑器的宏)。
回答:
AFAIK,不,如果不明确输入名称作为字符串,您将无法做到这一点。但是你可以使用stringer
工具从标准工具包来为你做它:
例如,鉴于此片段,
package painkiller
type Pill int
const (
Placebo Pill = iota
Aspirin
Ibuprofen
Paracetamol
Acetaminophen = Paracetamol
)
运行此命令
stringer -type=Pill
在同一目录下,将在package painkiller中创建文件pill_string.go,其中包含以下内容的定义:
func (Pill) String() string
建议与go generate
Go 1.4+ 的命令一起使用。
以上是 在Golang中不创建String()就能获取枚举名称吗 的全部内容, 来源链接: utcz.com/qa/418521.html