为了账号安全,请及时绑定邮箱和手机立即绑定

Golang获取类型常量的值

Golang获取类型常量的值

Go
森栏 2022-05-10 15:59:49
我试图弄清楚如何在 Go 中正确使用常量,例如在其他语言中使用枚举,但我正在努力正确使用类型化常量。假设我们有以下常量:type Status stringconst (    Created Status = "Created"    Completed Status = "Completed")看起来您可以Status通过以下方式从字符串中获取:status := Status(s)你怎么能走另一条路?我知道你可以实现一个String方法,但是如果我只想要核心类型中的任何底层值,无论是它int还是string?互联网让我失望了...
查看完整描述

2 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

正如@burak-serdar 提到的,解决方案非常简单:

string(status)

或者:

int(intStatus)


查看完整回答
反对 回复 2022-05-10
?
茅侃侃

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))


查看完整回答
反对 回复 2022-05-10
  • 2 回答
  • 0 关注
  • 208 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信