首页 > 后端开发 > Golang > 如何在不手动定义'String()”方法的情况下检索 Go 枚举的名称?

如何在不手动定义'String()”方法的情况下检索 Go 枚举的名称?

DDD
发布: 2024-12-07 01:59:15
原创
1011 人浏览过

How Can I Retrieve the Name of a Go Enum Without Manually Defining a `String()` Method?

Golang 中是否可以不添加 String() 方法来获取 Enum 名称

在 Go 中,要获取枚举的名称,通常需要定义func (TheEnum) String() 字符串方法。但是,这可能很乏味,尤其是在有很多枚举的情况下。

另一种选择是使用标准工具包中的 Go 字符串工具。这可以通过在与枚举定义相同的目录中运行以下命令来完成:

stringer -type=Pill
登录后复制
登录后复制

这将创建一个包含 func (Pill) String() 字符串方法的定义的文件。

package painkiller

type Pill int

const (
    Placebo Pill = iota
    Aspirin
    Ibuprofen
    Paracetamol
    Acetaminophen = Paracetamol
)
登录后复制

运行纵梁命令:

stringer -type=Pill
登录后复制
登录后复制

创建以下内容file:

// Code generated by "stringer -type=Pill"; DO NOT EDIT.

package painkiller

import "strconv"

func (p Pill) String() string {
    switch p {
    case Placebo:
        return "Placebo"
    case Aspirin:
        return "Aspirin"
    case Ibuprofen:
        return "Ibuprofen"
    case Paracetamol:
        return "Paracetamol"
    case Acetaminophen:
        return "Acetaminophen"
    }
    return "Pill(" + strconv.FormatInt(int64(p), 10) + ")"
}
登录后复制

这个方法可以用来获取枚举的名称,例如:

fmt.Println(Pill(3).String()) // Paracetamol
登录后复制

stringer工具可以与Go中的gogenerate命令一起使用1.4 为每个枚举自动生成一个 func (TheEnum) String() 字符串方法。

以上是如何在不手动定义'String()”方法的情况下检索 Go 枚举的名称?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板