golang 中,用 const 关键字定义常量:
常量的赋值语句是在编译期计算出值的,在执行过程中不能进行修改,因此常量必须有初始化语句或赋值
如果声明一组常量,除了第一项之外,其他项可以省略赋值语句,编译器会自动以第一项的数据和类型初始化这些缺省的常量:
打印出了 1 1 2 2
golang 中的枚举
我们了解了常量的创建方法,就可以通过一个集合来创建一系列常量的集合,这非常类似于其他语言中的枚举类型
golang 还提供了用于生成递增初始值的关键字 iota:
打印出了 2,iota 会让接下来同组的其他缺省初始值的常量具有递增的初始值
iota 还可以参与基本的运算:
但是这存在很大的局限性,因为常量的分配和赋值是在编译期进行的,因此不能通过调用函数来实现常量的赋值,因此复杂的运算甚至条件、循环都不能用在这里,例如,如果我们要取 K、M、G 这样以 1000 为单位累乘的结果时,iota 就显得力不从心了