2-2常量

2.2常量

常量是编译期间就已知且不可更改的值

2.2.1字面常量

字面常量就是程序中硬编码的常量。不同于C语言中,对于常量有特定的类型(例如-12属于int,而-12l属于long),Go语言中的常量是无类型的,只要这个常量在对应的变量范围内。(即12可以是int,可以是long,可以是float32等)

-12
3.1415926535897
3.2+12i //复数类型
true //布尔类型
"foo" //string类型

2.2.2常量定义

通过使用const来给字面给常量指定一个友好的名字

定义方式很自由,见下:

const Pi float64 = 3.1415926535897		//可以指定类型float32
const zero = 0.0 //也可以不指定类型,属于无类型
const( //也可以批量定义
size int64 = 1024
eof = -1
)
const u, v float32 = 0, 3 //也可以批量指定类型
const a, b, c = 3, 4, "foo" //也可以批量定义但自带类型

警告

常量定义时,右值必须是一个在编译期运算的常量表达式。任何运行期才能得到结果的表达式都会编译错误。

2.2.3预定义常量

Go语言预定义的常量有:true、false和iota

iota详见《常量与变量》一章

2.2.4枚举

Go语言不支持enum,因此枚举由常量创造,常用方法如下:

const(
Sunday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
numberofDays //这个常量没有导出(首字符)
)