一、常量的定义
常量:一经定义不可更改的量;功能角度看,当出现不需要被更改的数据时,应该使用常量进行存储,例如圆周率;使用常量可以保证数据,在整个运行期间内,不会被更改;常量的值仅仅支持,基础类型,字符串,字符,整型,浮点,布尔。
常量是在编译时被创建的,由于编译时的限制,定义常量的表达式必须为能被编译器求值的常量表达式(可以在其赋值表达式中涉及计算过程,但是所有用于计算的值必须在编译期间就能获得)
常量间的所有算术运算、逻辑运算和比较运算的结果也是常量,对常量的类型转换操作或以下函数调用都是返回常量结果:len、cap、real、imag、complex 和 unsafe.Sizeof
二、常量的声明格式
常量的声明格式:const 常量名 <可选的类型> = 常量值 ;当不使用类型是,GO可以通过值推导出类型
//不指定类型
const PI = 3.14
//指定类型
const word string = "单词"
//一行定义多个常量 c1=20 , c2=11
const c1, c2 = 20, 11
//使用 const()定义块,定义多个,每个常量单独一行
const (
c3 = 4
c4 = 10
)
三、iota 常量生成器
//const配合iota关键字使用,可以定义一组由0开始+1迭代的常量
const (
ci1 = iota
ci2 //ci2=1 相当于ci2=iota
ci3 //ci3=2 相当于ci3=iota
)
fmt.Printf("ci1=%v,ci2=%v,ci3=%v", ci1, ci2, ci3) //ci1=0,ci2=1,ci3=2
fmt.Println()
//可以在同一行使用多个iota,他们会各种递增不会相关干扰。
const (
i, j = 2 * iota, iota
m, n
)
fmt.Printf("i=%v,j=%v,m=%v ,n=%v", i, j, m, n) //i=0,j=0,m=2 ,n=1
//在同一行,iota相同
const (
e, f, g = iota, iota, iota //e=0,f=0,g=0
)