Go语言编程(五)之常量
来源:互联网 发布:文本语音朗读软件 编辑:程序博客网 时间:2024/04/28 04:39
在Go语言中,常量是指编译期间就已知且不可改变的值。常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型等。
字面常量
是指程序中硬编码的常量。Go语言的字面常量是无类型的。只要这个常量在相应类型的值域范围内,就可以作为该类型的常量。
常量定义
通过const关键字,可以给字面常量指定一个友好的名字:
const Pi float64 = 3.1415926
const zero = 0.0 // 无类型浮点常量
const (
size int64 = 1024
eof = -1 // 无类型整型常量
)
const u, v float32 = 0, 3 // u = 0.0, v = 3.0,常量的多重赋值
const a, b, c = 3, 4, "foo" // 无类型整型和字符串常量Go的常量定义可以限定常量类型,但不是必需的。如果定义常量时没有指定类型,那么它与字面常量一样,是无类型常量。
常量定义的右值也可以是一个在编译期运算的常量表达式,比如const mask = 1 << 3
由于常量的赋值是一个编译期行为,所以右值不能出现任何需要运行期才能得出结果的表达式,比如试图以如下方式定义常量就会导致编译错误:
const Home = os.GetEnv("HOME")
原因很简单,os.GetEnv()只有在运行期才能知道返回结果,在编译期并不能确定,所以无法作为常量定义的右值。
预定义常量
Go语言预定义了这些常量:true、false、iota
iota比较特殊,可以被认为是一个可被编译器修改的常量,在每一个const关键字出现时被重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字会自动增1.
从以下的例子可以理解iota的用法:
const ( // iota reset to 0
c0 = iota // c0 == 0
c1 = iota // c1 == 1
c2 = iota // c2 == 2
)
const (
a = 1 << iota // a == 1
b = 1 << iota // b == 2
c = 1 << iota // c == 4
)
const (
u = iota * 42 // u == 0
v float64 = iota * 42 // v == 42.0
w = iota * 42 // w == 84
)
const x = iota // x == 0
const y = iota // y == 0如果两个const的赋值语句的表达式是一样的,那么可以省略后一个赋值表达式。因此,上面前两个const语句可简写为:
const (
c0 = iota
c1
c2
)
const (
a = 1 << iota
b
c
)
枚举
枚举指一系列相关的常量。Go语言中我们可以用在const后跟一对圆括号的方式定义一组常量。
const (
Sunday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
numberOfDays
)
同Go语言的其他符号(symbol)一样,以大写字母开头的常量在包外可见。以上例子中numberOfDays为包内私有,其他符号则可被其他包访问。
0 0
- Go语言编程(五)之常量
- Go语言编程(一)之Go语言特性
- Go语言之常量与运算符
- Go语言编程(四)之变量
- Go语言编程(六)之类型
- Go语言编程(八)之函数
- Go语言编程(十五)之接口
- Go语言学习之常量(The way to go)
- Go并发编程之Go语言概述
- Go语言学习(2)-常量
- go语言示例:常量
- Go 语言常量
- go语言学习-常量
- Go 语言常量
- Go语言常量
- go语言学习-常量
- go语言学习-常量
- Go语言编程(十)之面向对象编程
- 关于如何提高Web服务端并发效率的异步编程技术
- Unity获得Apple的UDID,并存储到keychain
- 解决5.0以上系统ScrollView嵌套RecyclerView滑动迟缓
- GetWindowLong函数
- 次优查找树(Nearly Optimal Search Tree)
- Go语言编程(五)之常量
- 新的账号,新的开始,新的未来
- 【华为 OJ 】字符串加解密
- Unity5.0 EventSystem事件系统的详细说明
- Lua知识点_基础_rawset
- C#如何判断是哪个类的那个方法调用了当前方法
- 科大讯飞语音报 20021 的错误
- Android之个性化设置还有美爆了logcat神器
- Unity3D 游戏引擎之C#使用Socket与HTTP连接服务器传输数据包