是否可以在Golang中创建Enum名称而不创建String()

Kok*_*zzu 11 enums go

是否可以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工具从标准工具包来为你做它:

例如,给定此片段,

package painkiller

type Pill int

const (
    Placebo Pill = iota
    Aspirin
    Ibuprofen
    Paracetamol
    Acetaminophen = Paracetamol
)
Run Code Online (Sandbox Code Playgroud)

运行此命令

stringer -type=Pill
Run Code Online (Sandbox Code Playgroud)

在同一目录下将创建文件pill_string.go,在包painkiller中,包含一个定义

func (Pill) String() string
Run Code Online (Sandbox Code Playgroud)

建议使用go generateGo 1.4+命令.