常量表示运行时恒定不可改变的值。常量可以避免使用魔法数字。
常量值必须是编译器可确定的字符、字符串、数字或布尔值
可指定常量类型,由编译器通过初始化值推断
const x, y int = 123, 0x22
const s = "hello, world"
const c = '常'
const (
i, f = 1, 0.123
b = false
)
1.在函数代码块中,未使用的常量不会引发编译错误
func main() {
const x = 123
println(x)
const y = 1.23 //未使用,不会引发编译错误
{
const x = "abc" //在不同作用域定义同名常量
println(x)
}
}
输出:
123
abc
2.显式指定类型时,必须确保左右值类型一致,可做显式转换。右值不能超出常量类型取值范围,否则引发益处错误。
const (
x, y int = 99, -999
b byte = byte(x) //x 被指定为int类型,需显式转换为byte类型
n = uint8(y) //错误 constant -999 overflows uint8
)
3.在常量组中,如果不指定类型和初始化值,则默认与上一行非空常量右值相同
func main() {
const (
x uint16 = 120
y
s = "abc"
z
)
fmt.Printf("%T, %v\n", y, y)
fmt.Printf("%T, %v\n", z, z)
}
输出:
uint16, 120
string, abc
网友评论