new*_*cct 14
const?
const (
pi = 3.14
foo = 42
bar = "hello"
)
Run Code Online (Sandbox Code Playgroud)
lnm*_*nmx 14
有两种选择,具体取决于常量的使用方式.
第一种是基于int创建一个新类型,并使用这个新类型声明你的常量,例如:
type MyFlag int
const (
Foo MyFlag = 1
Bar
)
Run Code Online (Sandbox Code Playgroud)
Foo并且Bar将有类型MyFlag.如果要从a中提取int值MyFlag,则需要类型coersion:
var i int = int( Bar )
Run Code Online (Sandbox Code Playgroud)
如果这样不方便,请使用newacct建议的裸const块:
const (
Foo = 1
Bar = 2
)
Run Code Online (Sandbox Code Playgroud)
Foo并且Bar是可以分配给int,float等的完美常量.
这在Constants部分的Effective Go中有所介绍.另请参阅iota关于自动赋值(如C/C++)的关键字的讨论.
我最接近枚举的方法是将常量声明为类型。至少您有一些类型安全性,这是枚举类型的主要特权。
type PoiType string
const (
Camping PoiType = "Camping"
Eatery PoiType = "Eatery"
Viewpoint PoiType = "Viewpoint"
)
Run Code Online (Sandbox Code Playgroud)