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