go语言的特殊变量 iota
iota,是go语言的特殊常量,可以认为是一个可以被编译器修改的常量。
在每一个const关键字出现时,被重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。
来看看代码:
const y = iota
const r = iota func main() {
fmt.Print("y的值为:")
fmt.Println(y)
fmt.Print("r的值为:")
fmt.Println(r)
}
每一个const关键字出现时,都被重置为0.所以输出为:
y的值为:0
r的值为:0
然后在下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。
const (
q = iota
w = iota
e = iota
}
func main() {
fmt.Print("q的值为:")
fmt.Println(q)
fmt.Print("w的值为:")
fmt.Println(w)
fmt.Print("e的值为:")
fmt.Println(e)
}
输出:
q的值为:0
w的值为:1
e的值为:2
其实个人认为iota最重要的部分是当做枚举值使用。
那么提出这样一个问题,如果要让e等于4 怎么办?
const (
q = iota
w = iota
_
_
e = iota
}
func main() {
fmt.Print("q的值为:")
fmt.Println(q)
fmt.Print("w的值为:")
fmt.Println(w)
fmt.Print("e的值为:")
fmt.Println(e)
}
//输出
q的值为:0
w的值为:1
e的值为:4
再看个特殊例子1,e的值是多少:
const (
q = iota
w = 100 ////即使w没有调用iota,但是同样会使iota += 1
e = iota
}
func main() {
fmt.Print("q的值为:")
fmt.Println(q)
fmt.Print("w的值为:")
fmt.Println(w)
fmt.Print("e的值为:")
fmt.Println(e)
}
所以输出:
q的值为:0
w的值为:100
e的值为:2
再看看个特殊例子2,w和e会延续上一级的q的使用,调用iota
const (
q = iota
w // w和e会延续上一级的q的使用,调用iota
e //
f = 100
h = iota
}
func main() {
fmt.Print("q的值为:")
fmt.Println(q)
fmt.Print("w的值为:")
fmt.Println(w)
fmt.Print("e的值为:")
fmt.Println(e)
fmt.Print("f的值为:")
fmt.Println(f)
fmt.Print("h的值为:")
fmt.Println(h)
}
输出结果为:
q的值为:0
w的值为:1
e的值为:2
f的值为:100
h的值为:4
再看看个特殊例子3,对于iota每新增一行 计数才加1 同一行 计数不加1。
const (
q, w = iota + 1, iota + 3
e, f
h = iota
}
func main() {
fmt.Print("q的值为:")
fmt.Println(q)
fmt.Print("w的值为:")
fmt.Println(w)
fmt.Print("e的值为:")
fmt.Println(e)
fmt.Print("f的值为:")
fmt.Println(f)
fmt.Print("h的值为:")
fmt.Println(h)
}
输出的结果为,原因为 对于iota每新增一行 计数才加1 同一行 计数不加1。所以q为1,w为3.而e只去延续q,f只去延续w。
q的值为:1
w的值为:3
e的值为:2
f的值为:4
h的值为:2
go语言的特殊变量 iota的更多相关文章
- Go语言基础之变量和常量
Go语言基础之变量和常量 变量和常量是编程中必不可少的部分,也是很好理解的一部分. 标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名.常量名.函数名等等. Go语 ...
- GO语言常量和变量
标识符与关键字 标识符 人为定义有特殊意义的词,Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头. 关键字 关键字是指编程语言中预先定义好的具有特殊含义的标识符. GO语言中有25 ...
- 1.2 Go语言基础之变量和常量
变量和常量是编程中必不可少的部分,也是很好理解的一部分. 一.标识符与关键字 1.1 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名.常量名.函数名等等. Go语言中标识符由字 ...
- GO学习-(4) Go语言基础之变量和常量
Go语言基础之变量和常量 变量和常量是编程中必不可少的部分,也是很好理解的一部分. 标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名.常量名.函数名等等. Go语 ...
- Golang语言系列-01-Go语言简介和变量
Go语言简介 Go(又称Golang)是Google开发的一种静态强类型.编译型.并发型,并具有垃圾回收功能的编程语言. 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pi ...
- C语言 遍历流程 变量生命周期
来自c程序设计 谭浩强 程序编译流程 运行c程序的步骤 在编好一个c程序后.怎样上机进行编译运行呢?一般要经过一下几个步骤: 上机输入和编辑源程序.通过键盘和计算机输入程序,如果发现有错误,要及时改正 ...
- C语言中计算变量占用内存空间
C语言中计算变量占用内存空间 在C语言中通常用[sizeof]运算符计算变量占内存空间,如下面的例子:
- 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型
[源码下载] 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 常量 变量 基本 ...
- C语言的指针变量
C语言的指针变量 在C语言中,变量是固定范围的存储空间,它存储的是赋给他的值, 比如: ; /* 这里是定义一个整型变量a,并把12这个值存储在a的地址空间上 这个地址空间是系统随机分配的,对用户是透 ...
随机推荐
- 手动下载阿里云Nexus上的Jar包
手动下载阿里云Nexus上的Jar包 1.1 在任意目录下创建一个文件夹,创建一个pom.xml文件,一个bat批处理脚本,如图: 1.2 DownLoad.bat文件中的内容: call mvn - ...
- ThinkPHP Http工具类(用于远程采集 远程下载) phpSimpleHtmlDom采集类库_Jquery筛选方式 使用phpQuery轻松采集网页内容http://www.thinkphp.cn/extend/541.html
[php]代码库 view sourceprint? <?php // +------------------------------------------------------------ ...
- 多个else if语句
public class demo { public static void main(String[] args) { boolean examIsDone = true; int score = ...
- Flask之模板之宏、继承、包含
3.5 宏.继承.包含 类似于python中的函数,宏的作用就是在模板中重复利用代码,避免代码冗余. Jinja2支持宏,还可以导入宏,需要在多处重复使用的模板代码片段可以写入单独的文件,再包含在所有 ...
- Rhel5.5配置Centos yum源
ruiy哥,抛砖引玉 当你使用rhel系统时,[大部分数据库中心及政府企业选择linux服务器时通常考虑采购的版本一般不外乎是Rhel红帽及Suse,理由你懂的EcoSystem!]你没有一个红帽网络 ...
- Hp培训学习注册攻略
输入h20507.www2.hp.com/Saba/Web/Main用以注册的Hp partner portnal账户登入,
- **请写出一段Python代码实现删除一个list里面的重复元素
通常涉及到去重操作最好使用set,但是考虑到某些时候可能遇到不允许使用set的情况,那就自己实现一下: l = [2, 4, 5, 6, 1, 3, 4, 5] def f(l, b=0, c=1): ...
- JSP页面中的时间显示问题
在JSP页面中往往要将时间显示为指定格式的,如果传入的是Date类型很好解决 <fmt:formatDate value="${orderTime}" pattern=&qu ...
- docker学习记录1
起因 现在自己学习微服务,服务器越来越多,虽然自己写了一些shell脚本来安装需要的软件,比如mysql,redis,jdk等等,但是还是好麻烦.希望学习docker能够快速安装部署这些东西. 记录一 ...
- effective javascript 学习心得
第2条:理解JavaScript的浮点数 1.js数字只有一种类型 2.见代码 /** * Created by Administrator on 2017/7/2. */ console.log(& ...