在某些情况下,为了用户交互和调试目的,需要枚举的人类可读字符串表示。到目前为止,我想到的最好方案是:
type ElementType int
const (
Fire = ElementType(iota)
Air
Water
Earth
)
var elementTypeMap = map[ElementType]string{
Fire: "The Fiery Fire",
Air: "The Airy Air",
Water: "The Watery Water",
Earth: "The Earthy Earth",
}
func (el ElementType) String() string {
return elementTypeMap[el]
}
上述内容允许我将枚举用作整数并传递,保持其标准性能,并在任何地方轻松打印其字符串表示。唯一的缺点是如果您有多个枚举类型,则会添加一定量的样板代码:我宁愿避免这种情况而感到非常高兴。
是否有一种方式,最好是惯用的方式,可以减少上述样板代码?