Skip to content

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

iotaGo 语言的一个常量计数器,只能在常量的表达式中使用,iotaconst 关键字出现时重置为 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")

Released under the MIT License.