golang常量
常量,就是在程序编译阶段就确定下来的值,而程序在运行时则无法改变该值。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
定义常量的格式
语法格式如下:
const constantName [type]= value
cosnt
:定义常量关键字
constantName
:常量名称
type
:常量类型
value
:常量的值
实例
package main
import "fmt"
func main() {
// 单个定义常量
const PI float64 = 3.14
const PI2 = 3.1415 // 可以忽略类型
fmt.Printf("PI: %v\n", PI)
fmt.Printf("PI2: %v\n", PI2)
// 批量定义常量
const (
width = 100
height = 200
)
fmt.Printf("width: %v\n", width)
fmt.Printf("height: %v\n", height)
// 多重赋值
const i, j = 1, 2
fmt.Printf("i: %v\n", i)
fmt.Printf("j: %v\n", j)
}
输出结果
PI: 3.14
PI2: 3.1415
width: 100
height: 200
i: 1
j: 2
const
同时声明多个常量时,如果忽略了值则表示和上面一行的值相同。
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)
}
输出结果
a1: 100
a2: 100
a3: 100
iota
iota
,特殊常量,可以认为是一个可以被编译器修改的常量。它默认开始值是0
,每调用一次加1
。遇到 const
关键字时被重置为0
。iota
可以被用作枚举值:
实例
package main
import "fmt"
func main() {
const (
a = iota // 类似于i++
b = iota
c = iota
)
/*
也可以写作
const(
a = iota
b
c
)
*/
fmt.Printf("a: %v\n", a)
fmt.Printf("b: %v\n", b)
fmt.Printf("c: %v\n", c)
}
输出结果
a: 0
b: 1
c: 2
使用_
跳过某些值
package main
import "fmt"
func main() {
const (
a1 = iota // 0
_ // 1
a2 = iota // 2
)
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 // 0
a2 = 100 // 100
a3 = iota // 101
)
fmt.Printf("a1: %v\n", a1)
fmt.Printf("a2: %v\n", a2)
fmt.Printf("a3: %v\n", a3)
}
输出结果
a1: 0
a2: 100
a3: 2