是否可以在 Golang 中不创建 String() 的情况下获取 Enum 名称

是否可以func (TheEnum) String() string在不在 Golang 中创建的情况下获得 Enum 名称?


const (

 MERCURY = 1

 VENUS = iota

 EARTH

 MARS

 JUPITER

 SATURN

 URANUS

 NEPTUNE

 PLUTO

)

或者有没有办法动态定义常量?我发现了两种方式struct -based 和string -based,但两种方式都让我们重新输入每个标签 1 次(或复制粘贴和引用或使用编辑器的宏)


莫回无
浏览 150回答 2
2回答

30秒到达战场

AFAIK,不,如果不将名称明确输入为字符串,您就无法做到这一点。但是你可以使用stringer工具从标准工具包来为你做它:例如,给定这个片段,package painkillertype Pill intconst (    Placebo Pill = iota    Aspirin    Ibuprofen    Paracetamol    Acetaminophen = Paracetamol)运行这个命令stringer -type=Pill在同一目录中将创建文件pil_string.go,在包painkiller中,包含一个定义func (Pill) String() string建议与go generateGo 1.4+的命令一起使用。

catspeake

作为补充:在代码中使用下面的注释可以帮助go generate知道生成什么。注意,//和之间没有空格go:generate//go:generate stringer -type=Pilltype Pill intconst (    Placebo Pill = iota    Aspirin    Ibuprofen    Paracetamol    Acetaminophen = Paracetamol)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go