在 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中文网其他相关文章!