Go iota是一个比较奇怪的存在,它只能用在const的申明中,是一个从0开始的行数索引器。

看代码

package main

import (
"fmt"
) const (
i = iota
j = iota
k
l
) func main() {
fmt.Println("i=", i)
fmt.Println("j=", j)
fmt.Println("k=", k)
fmt.Println("l=", l)
}

输出结果:

i= 0

j= 1

k= 2

l= 3

前两个数理解起来比较容易,iota的值是在const声明中的从0开始的行数。所有第一行值为0,第二行值为1

第三个和第四个,其实是go中声明const时的缩略写法,表示值和它前面表达式等号右边的值是一样的,完整写法是:

const (

i = iota

j = iota

k= iota

l = iota

)

这样的话,输出结果就很好理解了。

如果改一下,给const k赋值:

const (
i = iota
j = iota
k =
l
) func main() {
fmt.Println("i=", i)
fmt.Println("j=", j)
fmt.Println("k=", k)
fmt.Println("l=", l)
}

则输出结果是:

i= 0

j= 1

k= 0

l= 0

再改一下:

const i = iota

const j = iota

func main() {

fmt.Println("i=", i)

fmt.Println("j=", j)

}

输出结果:

i= 0

j= 0

这表明iota的行记数,只在当前const内生效。

Go中iota是什么的更多相关文章

  1. Go第二篇之基本语法总结

    Go语言标识符 标识符以字母或下划线开头,大小写敏感 _是特殊标识符,用来忽略结果 Go语言变量的声明 变量(Variable)的功能是存储用户的数据.不同的逻辑有不同的对象类型,也就有不同的变量类型 ...

  2. 02. Go 语言基本语法

    Go语言基本语法 变量.数据类型和常量是编程中最常见,也是很好理解的概念.本章将从 Go 语言的变量开始,逐步介绍各种数据类型及常量. Go 语言在很多特性上和C语言非常相近.如果读者有C语言基础,那 ...

  3. Python开源框架

    info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...

  4. iota: Golang 中优雅的常量

    阅读约 11 分钟 注:该文作者是 Katrina Owen,原文地址是 iota: Elegant Constants in Golang 有些概念有名字,并且有时候我们关注这些名字,甚至(特别)是 ...

  5. GO中标识符,标识符,变量,常量,iota

    参考:https://www.cnblogs.com/nickchen121/p/11517455.html 一.标识符与关键字 1.标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变 ...

  6. C++STL 中的数值算法(iota、accumulate、adjacent_difference、inner_product、partial_sum)

    以下算法均包含在头文件 numeric 中 ##1.iota 该函数可以把一个范围内的序列从给定的初始值开始累加 先看用法. 例: 假设我需要一个长度为10,从5开始递增的序列 vector<i ...

  7. Go中的iota

    当时在学习Iota这个知识点的时候仅仅是一笔掠过,比如这种 const( a=iota b c ) 一眼看出他怎么使用的时候就觉得自己已经懂得了 再到后来看到这样的例子 const( a = 5*io ...

  8. golang枚举类型 - iota用法拾遗

    在c#.java等高级语言中,经常会用到枚举类型来表示状态等.在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手. 1.枚举类型定义 从百度百科查询解释如下:http://baike ...

  9. golang 使用 iota

    iota是golang语言的常量计数器,只能在常量的表达式中使用. iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(io ...

随机推荐

  1. [转]etcd 启用 https

    1, 生成 TLS 秘钥对 2,拷贝密钥对到所有节点 3,配置 etcd 使用证书 4,测试 etcd 是否正常 5,配置 kube-apiserver 使用 CA 连接 etcd 6,测试 kube ...

  2. 偏差(Bias)和方差(Variance)——机器学习中的模型选择zz

    模型性能的度量 在监督学习中,已知样本 ,要求拟合出一个模型(函数),其预测值与样本实际值的误差最小. 考虑到样本数据其实是采样,并不是真实值本身,假设真实模型(函数)是,则采样值,其中代表噪音,其均 ...

  3. Notes : <Hands-on ML with Sklearn & TF> Chapter 6

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  4. Strusts2

    Strusts2的原理很简单,首先,地址栏输入http://xxxx/xxxx/webapp/xx.action首先,请求会通过httpservlet发送给tomcat容器,tomcat发现这个请求是 ...

  5. Robust Influence Maximization

    一.   研究背景 在社会和经济网络中,影响最大化问题在过去十年中得到广泛的研究,由于其广泛应用于病毒式营销[1,2],突破检测[3],谣言监测[4]等.例如公司可以通过向初始用户(称为种子)发送免费 ...

  6. gitlab 之 cicd

    1.使用 docker 安装 gitlab docker run -d  --hostname gitlab \        --env GITLAB_OMNIBUS_CONFIG="ex ...

  7. Solr Cloud安装

    1. zookeeper-3.4.10安装: zoo.cfg配置文件: dataDir=/usr/share/zookeeper/data/ clientPort=2181 server.1=10.0 ...

  8. python random 模块

    http://blog.csdn.net/m0_38061927/article/details/75335069

  9. Python小练习之寻找101到200之间的素数

    方法1:from math import * def primeNumber(start,end): num = 0 for i in range(start,end): flag = 0 for j ...

  10. unigui ShowModal、MessageDlg

    procedure Calback(Sender: TComponent; AResult: Integer);procedure TForm.Calback(Sender: TComponent; ...