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的地址空间上 这个地址空间是系统随机分配的,对用户是透 ...
随机推荐
- java封装后引用的例子
封装好的文件: 另外一个文件引用封装文件的方法: 来源: https://www.runoob.com/java/java-encapsulation.html
- java web 程序---在线时长
思路:toLocalString()这个方法 <body> <% long t=session.getLastAccessedTime(); long t2=session.getC ...
- java代码------计算器核心位置添加
总结:点击等号时,什么代码 else if(str.equals("-")){ ready=true; if(c=='\0'){ num1=Double.parseDouble(j ...
- [Java][Web]利用 referer 防盗链
String referer = request.getHeader("referer"); if(referer == null || !referer.startsWith(& ...
- Centos6-7安装Python3.5
可以看到我们现在是2.7.5的,现在我安装一个3.5版本的 安装python3之前首先安装ssl开发库,否则会造成python3的ssl库都无法使用!!! yum install openssl op ...
- java,js 解unicode
import java.util.regex.Matcher; import java.util.regex.Pattern; public class UnicodeDecodeDataConver ...
- JAVA中的IO流介绍(2)
一.流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端, ...
- 证件照制作:使用PS打印一寸照片
1. 打开文件,文件-打开-选择要操作的图片: 2. 修改图片尺寸,图像-图像大小,弹出对话框后,设置 宽度:2.5cm,高度:3.5cm,分辨率:300 像素/英寸: 3. 为要打印的照片设置白边, ...
- Microsoft.Office.Core 引用以及 Microsoft.Office.Core.MsoTriState 的问题
转自原文 xiaoanian, Microsoft.Office.Core 引用以及 Microsoft.Office.Core.MsoTriState 的问题 因为要做一个提取ppt文字的工程,第一 ...
- JS限制并且显示textarea字数
转自:https://www.cnblogs.com/shinepolo/articles/1373113.html 1 <script type="text/javascript&q ...