作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.常量
1.常量概述
相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。
换句话说,常量在定义时必须赋值,且程序运行期间其值不能改变。
2.常量声明
常量的声明和变量声明非常类似,只是把"var"换成了"const",常量在定义的时候必须赋值。
举个例子:
package main
import "fmt"
func main(){
// 在声明常量时必须赋值,且在运行过程中不支持修改
const pi = 3.1415926
const haha = "哈哈"
// 也支持同时定义多个常量
const (
xixi = "嘻嘻"
heihei = "嘿嘿"
// 多常量定义时,如果没有赋值,则默认和上一行的常量赋值相同。
wuwu
pupu
)
var school = "清华大学"
// 常量一点定义,就不支持修改,否则编译报错。
// pi= 3.14
// 变量是可以修改的
school = "北京大学"
fmt.Println(pi,school,haha,xixi,heihei,wuwu,pupu)
}
3.iota
3.1 iota概述
iota是go语言的常量计数器,只能在常量的表达式中使用。iota在const关键字出现时将被重置为0。
const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。
使用iota能简化定义,在定义枚举时很有用。
3.2 几个常见的iota示例
package main
import "fmt"
func main() {
const (
n1 = iota // iota在const关键字出现时将被重置为0。
n2 //1
_ // 使用"_"跳过某些值
n4 //3
)
fmt.Println(n1, n2, n4)
const (
n5 = iota //0
n6 = 100 //100,在iota声明中间插队
n7 = iota //2
n8 //3
)
const n9 = iota //0
fmt.Println(n5, n6, n7, n8, n9)
// 定义数量级
const (
_ = iota
KB = 1 << (10 * iota)
MB = 1 << (10 * iota)
GB = 1 << (10 * iota)
TB = 1 << (10 * iota)
PB = 1 << (10 * iota)
)
fmt.Println(KB, MB, GB, TB, PB)
// 多个iota定义在一行,值是相同的
const (
a, b = iota + 1, iota + 2 //1,2,该行iota为0
c, d //2,3,该行iota为1
e, f //3,4,该行iota为2
)
fmt.Println(a, b, c, d, e, f)
}
3.3 iota使用总结
(1)const声明如果不写,默认就和上一行一样;
(2)遇到iota就初始化默认值为零;
(3)const中每新增一行变量声明iota就递增1;
二.字面量
没有出现变量名,直接出现了值,基础类型的字面量相当于是常量。
举个例子:
package main
import "fmt"
func main() {
// 整形字面量和浮点型字面量
fmt.Printf("%t\n", 10 == 10.00)
// 虚数字面量
fmt.Printf("%v\n", .4i)
// Unicode和rune字面量
fmt.Printf("%t\n", '\u4f17' == '众')
//字符串字面量
fmt.Printf("Hello\nWorld\n!\n")
}