iota

iota,特殊常量,可以认为是一个可以被编译器修改的常量。

iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。

iota 可以被用作枚举值:

const (
a = iota
b = iota
c = iota
)

  

第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2 可以简写为如下形式:

const (
a = iota
b
c
)

 

iota 用法

package main

import "fmt"

func main() {
const (
a = iota //0
b //1
c //2
d = "ha" //独立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢复计数
i //8
)
fmt.Println(a,b,c,d,e,f,g,h,i)
}

  

以上实例运行结果为:

0 1 2 ha ha 100 100 7 8

再看个有趣的的 iota 实例:

package main

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

  

以上实例运行结果为:

i= 1
j= 6
k= 12
l= 24

iota 表示从 0 开始自动加 1,所以 i=1<<0, j=3<<1(<< 表示左移的意思),即:i=1, j=6,这没问题,关键在 k 和 l,从输出结果看 k=3<<2,l=3<<3。

简单表述:

i=1
    :左移 0 位,不变仍为 1;

  • j=3:左移 1 位,变为二进制 110, 即 6;
  • k=3:左移 2 位,变为二进制 1100, 即 12;
  • l=3:左移 3 位,变为二进制 11000,即 24。
												

最新文章

  1. 【.net 深呼吸】细说CodeDom(2):表达式、语句
  2. js和jquery获取当前对象的子元素
  3. grid安装
  4. ligerUI布局时,Center中的Tab高度太小问题解决
  5. 智能车学习(五)&mdash;&mdash; dac学习
  6. [CS231n-CNN] Image classification and the data-driven approach, k-nearest neighbor, Linear classification I
  7. tar -cvPf new.tar `rpm -ql vsftpd` 建议不要用绝对路径&#39;/&#39;
  8. Gulp-入门教程 搭配环境
  9. HDU2196-Computer
  10. iOS安全攻防(二十三):Objective-C代码混淆
  11. S70卡
  12. winform控件跨线程委托
  13. hdu 1394 Minimum Inversion Number(这道题改日我要用线段树再做一次哟~)
  14. 配置apache,及mac下安装mysql
  15. Apache网站服务源码安装与站点部署
  16. PHP实现简单的评论与回复功能还有删除信息
  17. &#9733;RFC标准库_目录链接
  18. 学习Identity Server 4的预备知识
  19. 登录注册页面(连接MySQL8.0.15版本)
  20. java将long数据转为int类型的方法

热门文章

  1. 实用的表格内省略号和换行(兼容IE6)
  2. Android -- 保存文件
  3. apache 伪静态 .htaccess
  4. _com_util::ConvertBSTRToString的使用问题
  5. const char * 转换为char*
  6. Window 下安装 Redis
  7. [effictive c++] 条款04 确定对象被使用前已被初始化
  8. Python网络编程 - 一个简单的客户端Get请求程序
  9. Strange Addition
  10. Hibernate(六)一对多映射(多对一)