常量定义和使用
常量的定义, 一般定义常量使用大写字母,常量不允许左值赋值。
package main
import "fmt"
func main() {
const A int = 10
fmt.Println(A)
// 常量可以参与程序的计算
b := A + 10
fmt.Println(b)
// 常量不允许左值赋值
//A = A+10 //报错err
}
还能省略类型,注意: go语言的常量地址是不允许访问的
。常量必须定义
func main() {
const MAX = "加油"
fmt.Println(MAX)
fmt.Printf("%T\n",MAX)
//打印常量的地址
//go语言的常量地址是不允许访问的
fmt.Printf("%p",&MAX) // 报错 err
}
下面演示报错:
func main() {
const PI float64 //报错err
PI = 3.14 //报错err
}
func main() {
const PI float64 //err
fmt.Println(PI)
}
字面常量(了解)
所谓字面常量(literal),是指程序中硬编码的常量
func main() {
// 数据区->常量区(内存)
//这些都是没有具体常量名去指向的空间,叫字面常量
fmt.Println("hello world")//hello world会存在常量区
fmt.Println(3.14)//3.14同上
a:=10
fmt.Println(a+20) //20 也是存在常量区
}
iota枚举(常用)
常量声明可以iota常量生成器初始化,它用于生成一组以相似规则初始化的常量,但是不用每行都写一遍初始化表达式。
注意:在一个const 声明语句中,在第一个声明的常量所在的行,iota将会被置为0,然后在每一个有常量声明的行加一。
(1)第一种格式
func main() {
// iota 枚举
// iota枚举格式如果写在一行中 值相等,如果换行值在上一行基础加一
const(
A = iota
B = iota
C = iota
D,E =iota,iota
)
fmt.Println(A)//0
fmt.Println(B)//1
fmt.Println(C)//2
fmt.Println(D)//3
fmt.Println(E)//3
}
(2)第二种格式
func main() {
// 只需要对第一个进行iota赋值,后面会依次增长
const(
A = iota
B
C
D
)
fmt.Println(A)//0
fmt.Println(B)//1
fmt.Println(C)//2
fmt.Println(D)//3
}
(3)在定义iota枚举时可以自定义赋值
func main() {
// 在定义iota枚举时可以自定义赋值
const(
A = iota
B =10
C =20
D
E
F =iota
G
)
fmt.Println(A)//0
fmt.Println(B)//10
fmt.Println(C)//20
fmt.Println(D)//20
fmt.Println(E)//20
fmt.Println(F)//5
fmt.Println(G)//6
}