Go 语言设计以简洁见长,但是缺少了一些其他语言常见的枚举、do while等语法。实践中,需要此类语法时,就要学会常见的替代方案。学会后,你就会发现,实际上Go设计更加巧妙。
一、枚举类型
常用的方法是用const 定义常量来替代。网上常见的是
type PolicyType int
const (
POLICY_MIN PolicyType = 0
POLICY_MAX PolicyType = 1
POLICY_MID PolicyType = 2
POLICY_AVG PolicyType = 3
)
这种方法可行,但是当枚举数量比较多时,输入字符太多了,比较麻烦。
Go 提供了一个预定义的标识符iota来简化这种顺序号比较多的场合。这样,以上例子就可以简化为
type PolicyType int
const (
POLICY_MIN PolicyType = iota
POLICY_MAX
POLICY_MID
POLICY_AVG
)
这样就省事多了。
itoa起始序号为0,对于起始序号为其他数(如1)时,只要加上起始数即可,如下面的枚举序号就从1开始。
type PolicyType int
const (
POLICY_MIN PolicyType = iota+1
POLICY_MAX
POLICY_MID
POLICY_AVG
)
二、do while语句
对于do while 语句,有下面两种替代方案
方案1:
for ok := true; ok; ok = condition {
work()
}
方案2:
for {
work()
if !condition {
break
}
}
方案1属于Go的特色,方案2 就中规中矩了。
Go里的for循环十分强大,完全可以替代do while 和 while do 语句。看了方案1,你就知道对于while do 如何写了。