视频: https://www.bilibili.com/video/BV16p4y1n7tQ/
什么是常量
对比变量(variable)用于存储可变的数据,常量(constant)用于存储固定不变的数据,比如:
"hello"
3.14
true
与变量声明类似,声明变量用关键词var
,声明常量用关键词const
在变量声明各种形式的基础上,将var
关键词换成const
关键词,即可声明常量:
在Golang中,有两种常量,分别是:
- 未定类常量(Untyped Constant)
- 定类常量(Typed Constant)
下面一一介绍~
未定类常量
声明时未提供类型的常量就是未定类常量(Untyped Constant),比如:
未定类常量具有弹性(flexibility),在可兼容的类型之间转换无需显式转换
如果把const
换成var
将会报错:
在math
内置包里,声明了一组未定类常量:
定类常量
声明时提供类型的常量就是定类常量(Typed Constant),比如:
不同于未定类常量,定类常量在转换时必须显式转换,否则将会报错
上面的例子显示,不能将float64的定类常量pi
赋值给float32
的变量
常量与变量的不同点
- 常量声明时必须赋值:
- 常量不能重新赋值,因为常量的值是固定不变的(fixed):
- 已声明的常量可以不使用,不同于变量一旦声明必须使用:
- 短声明语法不能用来声明常量:
- 常量的数据类型只能是基本数据类型的其中一种:
- bool
- string
- int家族
- float家族
- complex家族
后面会学到一些类型(比如数组)不能声明为常量,但是如果有新类型是基于基本数据类型的也可以定义为常量:
声明一组常量的语法
定义一组常量非常简单,在math
包里已经见过类似的例子:
其中a是未定类的布尔常量,其余都是定类常量,而且我们注意到b==c
、d==e
,上面的例子可以简化成:
c和e都是定类常量,它们与上一行常量类型及数据保持一致
在定义常量组时,如果不提供初始值,则表示将使用上行的表达式,不妨试试:
总结
next time~ :D
原文地址: https://nbody1996.gitee.io/becoming_gopher/posts/008/
读后有收获可以请作者喝咖啡~