常量,就是在程序编译阶段就确定下来的值,而程序在运行时则无法改变该值。在Go程序中,常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型等。
定义常量的语法
定义一个常量使用const
关键字,语法格式如下:
1
| const constantName [type]= value
|
const
:定义常量关键字
constantName
:常量名称
type
:常量类型
value
:常量的值
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| package main
func main() { const PI float64 = 3.14 const PI2 = 3.1415
const ( width = 100 height = 200 )
const i, j = 1, 2 const a, b, c = 1, 2, "foo" }
|
const
同时声明多个常量时,如果省略了值则表示和上面一行的值相同
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package main
import "fmt"
func main() { const ( a1 = 100 a2 a3 )
fmt.Printf("a1: %v\n", a1) fmt.Printf("a2: %v\n", a2) fmt.Printf("a3: %v\n", a3) }
|
运行结果
iota
iota 比较特殊,可以被认为是一个可被编译器修改的常量,它默认开始值是0
,每调用一次加1
。遇到 const
关键字时被重置为 0
。
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package main
import "fmt"
func main() { const ( a1 = iota a2 = iota a3 = iota )
fmt.Printf("a1: %v\n", a1) fmt.Printf("a2: %v\n", a2) fmt.Printf("a3: %v\n", a3) }
|
运行结果
使用_
跳过某些值
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| package main
import "fmt"
func main() { const ( a1 = iota _ a2 = iota )
fmt.Printf("a1: %v\n", a1) fmt.Printf("a2: %v\n", a2) }
|
运行结果
iota
声明中间插队
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package main
import "fmt"
func main() { const ( a1 = iota a2 = 100 a3 = iota )
fmt.Printf("a1: %v\n", a1) fmt.Printf("a2: %v\n", a2) fmt.Printf("a3: %v\n", a3) }
|
运行结果