学习go语言编程之常量
什么在常量
在Golang中,常量是指在编译期就已知且不可改变的值。
字面常量
在程序中硬编码的常量值被称为字面常量,如:
-12 // 整数类型常量
3.1415926 // 浮点类型常量
3.2+12i // 复数类型常量
true // 布尔类型常量
"foo" // 字符串常量
常量定义
使用关键字const给常量指定一个友好的名字:
const pi float64 = 3.1415926 // 限定类型的常量
const zero = 0.0 // 无类型浮点常量
Golang中的常量定义可以限定类型,但不是必须的。如果定义常量时没有指定类型,那么它与字面常量一样,是无类型常量。
还可以同声明多个常量:
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" // a = 3, b = 4, c = "foo"
常量的值也可以是一个在编译期运算的常量表达式:
const mask = 1 <<< 3 // mask = 8
但不能是在运行期才能得出结果的值,如下常量定义将编译报错。
const home = os.GetEnv("HOME")
预定义常量
Golang中预定义了这些常量:true,false和iota。
iota很特殊,可以认为是一个可被编译器修改的常量:在每一个const关键字出现时被重置为0,然后在下一次const出现之前,每出现一次iota,其所代表的数字会自动加1。
const {
c0 = iota // c0 = 0
c1 = iota // c1 = 1
c2 = iota // c2 = 2
}
const {
a = 1 << iota // a = 1,iota所代表的数字被重置为0
b = 1 << iota // b = 2
c = 1 << iota // c = 4
}
const {
u = iota * 42 // u = 0,iota所代表的数字被重置为0
v = iota * 42 // v = 42
w = iota * 42 // 84
}
const x = iota // x = 0,iota所代表的数字被重置为0
const y = iota // y = 0,iota所代表的数字被重置为0
枚举
在const关键字后使用一对圆括号的方式定义一组常量,这组常量就是Golang中的枚举。
const (
Sunday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
numberOfDays // 小写字母开头,这个常量没有导出,属于包私有的,只能在包内可见
)
只有以大写字母开头的枚举值对其他包可见,以小写字母开头的枚举值只能在包内可见。
学习go语言编程之常量的更多相关文章
- 如何轻松学习C语言编程!
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- 学习go语言编程系列之定义变量
package main import ( "fmt" "math") func main() { // 1. 定义变量名age,不初始化,使用对应类型的默认值 ...
- 学习go语言编程系列之helloworld
1. 下载https://golang.org/dl/ # Go语言官网地址,在国内下载太慢,甚至都无法访问.通过如下地址下载:https://golangtc.com/download. 2. 安装 ...
- Linux C语言编程学习笔记 (1)进程控制入门
想进行Linux系统开发已经很久了,一直没有付诸实践.今日终于开始学习Linux下的C语言编程,研究一天,终于大概弄明白了Linux系统进程管理的一些基本概念和编程方法,总结下来以方便大家学习和自己实 ...
- linux下的c语言编程学习笔记
视频参看csdn学院王阳和下面的linux环境下c语言编程基础相当的经典,其中王阳的视频讲的很好,相当的经典 编译hellogcc.c需要依赖/home目录下的头文件 为了避免同一个文件被includ ...
- C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目
C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...
- 适合刚刚学习编程的萌新:C语言编程学习制作超简单又好玩的报数游戏!
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- Linux下C语言编程基础学习记录
VIM的基本使用 LINUX下C语言编程 用gcc命令编译运行C语言文件 预处理阶段:将*.c文件转化为*.i预处理过的C程序. 编译阶段:将*.i文件编译为汇编代码*.s文件. 汇编阶段:将*.s ...
- 狗屁不通的“视频专辑:零基础学习C语言(小甲鱼版)”(2)
前文链接:狗屁不通的“视频专辑:零基础学习C语言(小甲鱼版)”(1) 小甲鱼在很多情况下是跟着谭浩强鹦鹉学舌,所以谭浩强书中的很多错误他又重复了一次.这样,加上他自己的错误,错谬之处难以胜数. 由于拙 ...
- 华为C语言编程规范
DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...
随机推荐
- [转帖]Kafka—配置SASL/PLAIN认证客户端及常用操作命令
介绍 SASL/PLAIN 是一种简单的 username/password安全认证机制,本文主要总结服务端开启该认证后,命令行客户端进行配置的操作流程. 配置 增加jaas.properties ...
- [转帖]MySQL InnoDB存储引擎大观
https://baijiahao.baidu.com/s?id=1709263187856706948&wfr=spider&for=pc MySQL InnoDB 引擎现在广为 ...
- 【转帖】50.设置HotSpot采用解释器还是JIT编译器(-Xint、-Xcomp、Xmixed以及-Server、-Client)
目录 1.设置HotSpot 1.设置HotSpot 1.设置采用解释器还是JIT编译器 -Xint: 完全采用解释器模式执行程序. -Xcomp: 完全采用即时编译器模式执行程序.如果即时编译出现问 ...
- [转帖]关于linux:NUMA架构下的内存延迟区别测试
https://lequ7.com/guan-yu-linuxnuma-jia-gou-xia-de-nei-cun-yan-chi-qu-bie-ce-shi.html 当初的服务器物理机CPU个别 ...
- nginx 进行目录浏览的简单配置
1. 公司网络安全不让用vsftpd的匿名网络访问了, 没办法 只能够使用 nginx 通过http协议来处理. 2. 最简单的办法就是另外开一个nginx进程简单设置一下nginx的配置文件 wor ...
- [转贴]更改 CMD 编码(解决 VSJupyter 乱码)
https://zhuanlan.zhihu.com/p/521376336 以 将编码更改为 UTF-8 为例 1. 临时修改编码 运行 CMD 输入 chcp 查看当前的代码页 (代码页和国家/地 ...
- 记windows自定义bat脚本自启动
自定义 Windows 启动脚本简化版 在本指南中,我们将使用一个简化的批处理文件(.bat)来演示如何创建自定义的 Windows 启动脚本.以下是一个基本的模板,您只需根据需要在 :begin 部 ...
- 基于密码学的身份混淆系统 -- idmix
简介 Hyperledger Fabric的Idemix是一个基于密码学的身份混淆系统,它提供了一种在区块链网络中实现用户隐私的方法.Idemix的主要特性是它的零知识证明系统,这是一种允许用户证明他 ...
- TienChin 渠道管理-更新渠道接口开发
ChannelController /** * 修改渠道 */ @PreAuthorize("hasPermission('tienchin:channel:edit')") @L ...
- go中x/sync/semaphore解读
semaphore semaphore的作用 如何使用 分析下原理 Acquire TryAcquire Release 总结 参考 semaphore semaphore的作用 信号量是在并发编程中 ...