是否可以func (TheEnum) String() string在Golang中创建Enum名称?
const (
MERCURY = 1
VENUS = iota
EARTH
MARS
JUPITER
SATURN
URANUS
NEPTUNE
PLUTO
)
Run Code Online (Sandbox Code Playgroud)
或者有没有办法在运行中定义常量?我找到了两种基于struct- based和string- based的方法,但是这两种方式都让我们再次重新键入每个标签(或复制粘贴和引用或使用编辑器的宏)
Ain*_*r-G 19
AFAIK,如果没有明确地将名称键入字符串,你就不能这样做.但是你可以使用stringer工具从标准工具包来为你做它:
例如,给定此片段,
Run Code Online (Sandbox Code Playgroud)package painkiller type Pill int const ( Placebo Pill = iota Aspirin Ibuprofen Paracetamol Acetaminophen = Paracetamol )运行此命令
Run Code Online (Sandbox Code Playgroud)stringer -type=Pill在同一目录下将创建文件pill_string.go,在包painkiller中,包含一个定义
Run Code Online (Sandbox Code Playgroud)func (Pill) String() string
建议使用go generateGo 1.4+命令.