当前位置: 首页 > 面试题库 >

在Golang中不创建String()就能获取枚举名称吗

薛彭薄
2023-03-14
问题内容

是否可以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 generateGo 1.4+ 的命令一起使用。



 类似资料:
  • 我应该工作,对吧?但它不是!!!!它告诉我dbValue可以转换为RelationActiveEnum...

  • 问题内容: 将枚举元素的名称获取为s 数组的最简单和/或最短的方法是什么? 我的意思是,例如,如果我有以下枚举: 该方法将返回数组。 问题答案: 这是任何班级的一线客: Java 8之前的版本仍然是单一的,尽管不太优雅: 您会这​​样称呼: 如果您只想为硬编码的枚举类提供一些简单的方法:

  • 但我的代码不起作用,它说类型没有定义:

  • 当我试图创建枚举时,我的EclipseIDE不断给出错误:java类型。伊奥。无法解析ObjectInputStream。它是从required间接引用的。类文件。

  • 问题内容: 如果我有一个带有原始值的枚举: 如何将值转换为字符串?语言中是否可用这种类型名称自省? 类似的东西(此代码将不起作用): 问题答案: 从Xcode 7 beta 5(Swift版本2)开始,您现在可以默认使用来打印类型名称和枚举大小写,或者使用的初始值设定项或字符串插值语法转换为。因此,对于您的示例: 因此,不再需要定义和维护一个方便函数,该函数在每种情况下都可以打开以返回字符串文字。

  • 我想迭代一个TypeScript一个类型,并获取每个枚举的符号名,例如: