常量的声明及使用:
声明一个常量一定要给它赋值
- const fliename = "abg.txt"
- const s string = "hello"
- const(
a = 3
b = bool
)
const 数值在声明时不做类型确定时,可作为各种数值使用,相当于在编译是直接把数值换过去
const a, b = 3, 4
c := math.Sqrt(a*a+b*b)
此时,a,b 不需做强制转换
const a, b int = 3, 4
c := math.Sqrt(a*a+b*b)
常量a, b做了类型说明, 此时,编译报错"cannot use a * a + b * b (type int) as type float64 in argument to math.Sqrt"
特殊的常量-枚举
go语言中没有专门的枚举类型,go中的枚举是以一个const块来表示的,分为普通枚举类型和自增值枚举类型
普通枚举类型:
const(
go = 0
java = 1
c++ = 2
)
fmt.Println(go, java, c++) 输出为:0, 1 ,2
可以用"iota"做自增来简化枚举
自增值枚举类型:
const(
go = iota
java
c++
)
fmt.Println(go, java, c++) 输出为:0, 1, 2
const(
go = iota
_ //占位符
c++
java
)
fmt.Println(go, java, c++) 输出为:0, 3, 2
"iota"从0开始自增1,可以做一些复杂的事,比如一些运算
const(
b = 1 <<(10*iota) //把1左移10*0位,即1
kb //把1左移10*1位,即10000000000 = = 1024
mb //把1左移10*2位,即 = 1048576
gb //.......
tb
pb
)fmt.Println(b, kb, mb, gb, tb, pb)
输出为:1 1024 1048576 1073741824 1099511627776 1125899906842624