Golang获取类型常量的值

我试图弄清楚如何在 Go 中正确使用常量,例如在其他语言中使用枚举,但我正在努力正确使用类型化常量。


假设我们有以下常量:


type Status string


const (

    Created Status = "Created"

    Completed Status = "Completed"

)

看起来您可以Status通过以下方式从字符串中获取:


status := Status(s)

你怎么能走另一条路?我知道你可以实现一个String方法,但是如果我只想要核心类型中的任何底层值,无论是它int还是string?互联网让我失望了...


森栏
浏览 209回答 2
2回答

鸿蒙传说

正如@burak-serdar 提到的,解决方案非常简单:string(status)或者:int(intStatus)

茅侃侃

认为有一点混乱,但您正在创建的常量的基础类型是字符串,而不是整数。所以使用int(Created)会给你一个cannot convert Created (type Status) to type int错误。如果您在使用 Enum 并希望将字符串值与之关联 - 您应该按照您的建议使用 Stringer 接口,简单的方法如下:type Status intfunc (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))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go