我试图弄清楚如何在 Go 中正确使用常量,例如在其他语言中使用枚举,但我正在努力正确使用类型化常量。假设我们有以下常量:type Status stringconst ( Created Status = "Created" Completed Status = "Completed")看起来您可以Status通过以下方式从字符串中获取:status := Status(s)你怎么能走另一条路?我知道你可以实现一个String方法,但是如果我只想要核心类型中的任何底层值,无论是它int还是string?互联网让我失望了...
2 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
认为有一点混乱,但您正在创建的常量的基础类型是字符串,而不是整数。所以使用int(Created)会给你一个cannot convert Created (type Status) to type int错误。
如果您在使用 Enum 并希望将字符串值与之关联 - 您应该按照您的建议使用 Stringer 接口,简单的方法如下:
type Status int
func (s Status) String() string {
switch s {
case 0:
return "Created"
case 1:
return "Deleted"
default:
return ""
}
}
const (
Created Status = iota
Deleted
)
然后,任何时候您需要 Status 的字符串版本,您都可以调用string(Created)或简单地传递它(即fmt.Println(Created))
- 2 回答
- 0 关注
- 208 浏览
添加回答
举报
0/150
提交
取消