常量
1、常量定义
通过const关键字
func main(){
const pi float64 = 3.1415926
const zero = 0.0 //无类型浮点常量
const(
size int64 =1024
eof = -1
)
const u,v float32 =0,3 //多重赋值
const a,b,c = 3,4,"foo"
//常量的赋值是一个编译器行为,所以右值不能出现任何需要运行期才能得出结果的表达式
}
2、预定义常量
Go语言预定义了这些常量:true、false、iota
iota比较特殊,可以被认为是一个可被编译器修改的常量,在每个const关键字出现时被重置为0,然后在下一个const出现之前,每出现一次iota,所代表的的数字就会自动增1。
func main(){
const ( // iota被重设为0
c0 = iota // c0 == 0
c1 = iota // c1 == 1
c2 = iota // c2 == 2
)
const (
a = 1 << iota // a == 1 (iota在每个const开头被重设为0)
b = 1 << iota // b == 2
c = 1 << iota // c == 4
)
const (
u = iota * 42 // u == 0
v float64 = iota * 42 // v == 42.0
w = iota * 42 // w == 84
)
const x = iota // x == 0 (因为iota又被重设为0了)
const y = iota // y == 0 (同上)
//如果两个const的赋值语句的表达式是一样的,那么可以省略后一个赋值表达式。因此,上
//面的前两个const语句可简写为:
const ( // iota被重设为0
c00 = iota // c00 == 0
c01 // c01 == 1
c02 // c02 == 2
)
const (
a0 = 1 <<iota // a0 == 1 (iota在每个const开头被重设为0)
b0 // b0 == 2
c0 // c0 == 4
)
}
3、枚举
Go语言不支持enum关键字
下面是常规的枚举表示法,其中定义了一系列的整型常量
func main(){
const (
Sunday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
numberOfDays // 这个常量没有导出,由于是小写字母开头的
)
// 同Go语言的其他符号(symbol)一样,以大写字母开头的常量在包外可见。
// 以上例子中numberOfDays为包内私有,其他符号则可被其他包访问。
}