常量
常量使用关键字 const 定义,用于存储不会改变的变量。无法在程序运行过程中修改它的值。
存储在常量中的数据只可以是布尔型、数字型(整数型,浮点型和复数)和字符串型。例如:
格式:const identifier [type] = value
const Pi = 3.141592658
const a = 3
Go语言中,可以省略类型说明符 type ,Go的编译器可以根据变量的值来推断它的类型,例如:
const a string = "abc" // 显式类型定义
const a := "abc" // 隐式类型定义
另外,未定义类型的常量会在必要时候根据上下文来获得相关类型,例如:
var n int
f(n + 5) // 无类型的数字型常量"5" 它的类型再这会变成int
常量的值必须在编译时候就能够确定的,可以在赋值表达式中涉及计算过程,但是所有用于计算的值必须在编译期间就能获得:
正确做法:const c = 2/3
错误做法:const c = getNumber()
在编译期间自定义函数属于未知,因此无法用于常量的赋值,但是内置函数可以使用,比如len()
注:常量的值如果赋值是一个精度过小的数字型变量,可能会因为无法正确表达常量所代表的的数字而导致溢出,这会在编译期间引发错误。
常量允许使用并行赋值的方式,例如:
const beef, two, c = "eat", 2, "veg"
const (
a, b, c = 1, 2, 3
d, e, f = 4, 5, 6
)
常量可以作枚举,例如:
const (
Unknown = 0
Female = 1
Male = 2
)
const (
a = iota // 此时的a是0
b = iota // 此时的b是1
c = iota // 此时的c是2
// iota在新的一行被使用时,它的值都会自动加1
)
简写如下:
const (
a = iota
b
c
)
iota的使用:
iota是golang语言的常量计数器,只能在常量的表达式中使用。
iota在const关键字出现时将被重置为0,const中每增加一行常量声明,将是iota计数一次(仅在const内部计数)。
const (
a = iota // a =0
b // b = 1
c // c = 2
)
const d = iota // d=0
参考资料:https://studygolang.com/articles/2192
有疑问加站长微信联系(非本文作者)