当前位置: 首页 > 知识库问答 >
问题:

在Go中获取枚举的字符串表示的惯用方法是什么?

沈德寿
2023-03-14

如果我有枚举:

type Day int8

const (
    Monday Day = iota
    Tuesday
    ...
    Sunday
)

什么是更自然的方式去得到它的字符串?

func ToString(day Day) string {
   ...
}
func (day Day) String() string  {
    ... 
}

共有1个答案

须彭亮
2023-03-14

第二个是比较惯用的,因为它满足Stringer接口。

func (day Day) String() string  {
    ... 
}

我们在day类型而不是*day类型上声明此方法,因为我们不更改值。

它将使你能够写作。

fmt.Println(day)

并获取string方法产生的值。

 类似资料:
  • 问题内容: 我试图代表一个简化的染色体,该染色体由N个碱基组成,每个碱基只能是的一个。 我想用一个枚举形式化约束,但是我想知道在Go语言中最惯用的枚举方式是什么。 问题答案: 引用语言规范:Iota 在常量声明中,预声明的标识符iota表示连续的无类型整数常量。每当保留字const出现在源中时,它将重置为0,并在每个ConstSpec之后递增。它可以用来构造一组相关的常量: 在Expression

  • 我试图表示一个简化的染色体,它由N个碱基组成,每个碱基只能是中的一个。 我想用枚举形式化约束,但我想知道在Go中模拟枚举的最惯用的方式是什么。

  • 问题内容: 我定义了以下枚举 现在的印刷价值是 相反,我想打印枚举的值 要实现此功能可以做些什么? 问题答案: 您正在打印枚举 对象 。如果只想打印该属性,请使用该属性: 请参阅 对枚举成员及其属性 的 编程访问权限 部分 : 如果您有枚举成员并需要其名称或值: 如果只需要提供自定义字符串表示形式,则可以向枚举添加方法: 演示:

  • 我有一个typescript中的枚举,它有20个字段。我有一个UI应用程序,用户可以将信息放在一些自由文本中(例如,让我们说用户喜欢的颜色)。我的要求是获取这些颜色信息并致电中层服务。midtier服务将Color定义为Enum,与UI枚举定义保持同步。我需要将用户输入文本转换为枚举(在前端),因为在构建过程中会引发编译问题。我没有找到执行转换的方法(例如,从用户输入字符串到特定枚举元素)。任何指

  • 我用一些字符串作为属性的常量创建了一个枚举。每个常数中字符串的数量都不一样,所以我使用了varargs(第一次这样做)。这是我的枚举: 现在我想要能够键入类似的内容:

  • 我有一个java对象,它有一个名为type的属性,代表一个枚举: 当使用springfox在yaml中生成规范时,该对象在引用对象TypeValue时生成以下输出: 我想做的是在生成doc时忽略枚举类型,从规范中删除枚举类型。这就是我想要的: type:对象属性:op:type:string路径:type:string值:type:对象属性:{}标题:补丁 我尝试使用@ApiModelProper