学习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 ...
随机推荐
- 不同linux发行版 FIO测试结果总结
不同linux发行版 FIO测试结果总结 背景 机器来源 配置: 2路28核心Golden 6330 2.0Ghz 512G内存 硬盘 24块 960G SSD (22块 Raid5 + 2块 hot ...
- [转帖]Python连接Oracle数据库进行数据处理操作
https://www.dgrt.cn/a/2259443.html?action=onClick 解决以下问题: Python连接Oracle数据库,并查询.提取Oracle数据库中数据? 通过Py ...
- OpenEuler2203 基于容器和本地文件部署Redis Cluster的过程以及简单性能测试
背景 其实文件搭建和集群搭建没有任何区别 这次用先用容器搭建出来,然后测试一下性能 想着再使用本地部署的方式搭建一下. 两项验证容器和基于文件的搭建的性能差异 部分资料来源: https://blog ...
- sshpass 免密码进行文件复制的方法
1. 部分centos8 没有安装 sshpass 需要先安装 sshpass yum install sshpass 2. 需要增加一个配置文件, 避免因为 stickhost 检查 造成命令失效 ...
- mysql 的outfile以及infile 语法简单备份恢复表
今天学习 姜老师的 mysql技术内存innodb存储引擎时看到了有一个outfile和infile的语法,感觉挺好的, 这里面进行一下简单的学习与验证. oufile 可以到处文件 infile 可 ...
- 查看 Oracle 数据库内 没有Primary key 类型主键的表信息
查看 Oracle 数据库内 没有Primary key 类型主键的表信息 SELECT * FROM user_tables A WHERE NOT EXISTS ( SELECT * FROM u ...
- 《Javascript高级程序设计》读书笔记——继承与原型链
继承与原型链 原型链 在原型那一节中,讲到了用于搜索对象属性的原型搜索机制:而原型链,本质上 就是对原型搜索机制的扩充: 回想下之前的内容,我们要读取一个Person的实例p属性,会先搜索实例p:如果 ...
- Vant中List列表下拉加载更多
van-list上只有一层父级元素div,多了可能下拉加载出不来:或者更多 <template> <div class="scholl-declarepage"& ...
- STM32CubeMX教程26 FatFs 文件系统 - W25Q128读写
1.准备材料 正点原子stm32f407探索者开发板V2.4 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 ...
- 天玑9300大战骁龙8 Gen3:十余项数据实测 到底谁才是安卓之王?
一.前言:全大核天玑9300正面硬钢骁龙8 Gen3 究竟谁才是安卓芯片之王? 今年,两家移动芯片厂商都开始放大招了,骁龙首发Cortex-X4超大核,联发科也不甘示弱,初次将"全大核&qu ...