Go 语言笔记:常量
常量
常量,表示固定值,比如
π
,常量定义之后不能修改,定义格式如下
go
// 定义单个常量
const pi = 3.1415
pi = 1.2 // 编译错误 Cannot assign to age,常量不允许重新赋值
// 定义多个常量
const (
notFound = 404
ok = 200
config = "app.properties"
)
声明多个常量时,如果后面的常量未进行初始化,那么其值默认为其上一个常量的值
go
// m2, m3 的值同样为 18
const (
m1 = 18
m2
m3
)
iota
iota
是Go
语言的一个常量计数器,只能在常量的表达式中使用,iota
在const
关键字出现时重置为 0,常量每新增一行,iota
自动+1
,即使这一行没有使用到iota
,即iota
是逐行+1
, 不会因为同一行中多次使用iota
而导致下一行的值变为+n
go
// m0="lemon", m1 = 1, m2 = 20, m3 = 3, m4 = 4
const (
m0 = "lemon"
m1 = iota
m2 = 20
m3 = iota
m4
)
当一行存在多个 iota
时,其值都一样
go
// m1 = 1, m2 = 2, m3 = 2, m4 = 3
const (
m1, m2 = iota + 1, iota + 2
m3, m4 = iota + 1, iota + 2
)
常量值在编译时确定
常量的值必须是在编译时就确定的,而函数的调用是在运行时,如果将函数返回值赋给常量,那么你会得到一个编译错误,但内置函数(不需要导入包)不受此影响
go
// age 初始化错误:Const initializer 'math.Sqrt(4)' is not a constant
const age = math.Sqrt(4)
// len 为内置函数,不需要导入包,因此 length初始值 = 5
const length = len("lemon")