go 语言学习笔记 0001 --> iota
go语言中预置了一个预定义常量 iota
这个东西有个很奇怪的特性,会根据 const 关键字改变值
默认的,iota在const出现的时候会初始化为0,而后不断递加1,直到出现第二个const关键字
const (
countagn1 = 2 << iota // 2 0
countagn2 = 2 << iota // 4 2
countagn3 = 2 << iota // 8 6
)
// 00010 上面的计算结果:iota 不是递加然后加上常量值,而是递加位数,在常量值的二进制数位基础上左移
const (
countagn4 = 3 << iota // 3 0 3*2^0
countagn5 = 3 << iota // 6 1 3*2^1
countagn6 = 3 << iota // 12 2 3*2^2
)
// 00011 所以,口算iota的计算结果,直接在iota的基础上乘以2的iota次方 func main(){
fmt.Println("countagn1",countagn1)
fmt.Println("countagn2",countagn2)
fmt.Println("countagn3",countagn3)
fmt.Println("countagn4",countagn4)
fmt.Println("countagn5",countagn5)
fmt.Println("countagn6",countagn6)
} // OUT countagn1 2
countagn2 4
countagn3 8
countagn4 3
countagn5 6
countagn6 12
结论都写在代码里了,iota对常量的影响并不是相加,而是在常量的二进制数值上进行对应的位移(>>也是可以的),那么由于二进制的表示方式,每位移一次,就是乘以2,所以,常量会以2的iota次方变化。
go 语言学习笔记 0001 --> iota的更多相关文章
- Go语言学习笔记三: 常量
Go语言学习笔记三: 常量 定义常量 常量就是在声明后不能再修改的量. const x int = 100 const y string = "abc" const z = &qu ...
- Go语言学习笔记(1)——顺序编程
Go语言学习笔记这一堆主要是<Go语言编程>(人民邮电出版社)的读书笔记.中间会穿插一些零碎的点,比如源码学习之类的.大概就是这样吧. 1. 顺序编程 1.1 变量 变量的声明: var ...
- HTML语言学习笔记(会更新)
# HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...
- 2017-04-21周C语言学习笔记
C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...
- 2017-05-4-C语言学习笔记
C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...
- GO语言学习笔记(一)
GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...
- Haskell语言学习笔记(88)语言扩展(1)
ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Ex ...
- Go语言学习笔记十三: Map集合
Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...
- Go语言学习笔记十二: 范围(Range)
Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...
随机推荐
- BZOJ5106: [CodePlus2017]汀博尔
[传送门:BZOJ5106] 简要题意: 给出n棵树,初始高度为h[i],每棵树每个月长高a[i] 现有一个客户,需要至少s长的总木材,而且每次截取的木材必须是一整颗树而且高度大于等于L 求出最少的月 ...
- php中局部变量和全局变量
php中局部变量和全局变量 代码1:函数内部使用函数外部变量错误方法 <?php $name = 'fish'; function animal() { echo $name; } animal ...
- SQL SERVER 新增表、新增字段、修改字段 判断表是否存在
// 新增之前判断表是否存在 IF NOT EXISTS (SELECT NAME FROM SYSOBJECTS WHERE ID = OBJECT_ID('tb_MessageHistory')) ...
- UVA And Then There Was One
约瑟夫环问题,只不过每次删除一个后,在移m的倍数. #include <iostream> #include <cstdio> #include <cstring> ...
- 使用form-create动态生成vue组件
使用form-create动态生成vue自定义组件和嵌套表单组件 [github] | [说明文档] 示例 let rule = [ { type:'row', children:[ { type:' ...
- 关于Shiro的退出请求是如何关联到登录请求的思考
一.结论 先给出结论,是因为本身是很简单的道理.假设我们没有使用任何认证授权的框架,就简单的使用Cookie和HttpSession,那么用户登录后的每一个请求是如何关联上这个用户的呢?答案很简单,由 ...
- C#实现窗口拖动时各个控件同比自己主动放缩大小
实现方式主要是利用panel控件为主题.对于每一个控件的大小位置和字体这几个属性进行记录. 然后依据窗口改变的大小同一时候放缩. 简要过程例如以下: 1 创建C#窗口程序项目. 2 Panel放置到 ...
- MongoDB + node-mongoskin简单演示样例
特点 无模式 MongoDB 中的每一条文档,都是一个 JSON 对象,因此你无需提前定义一个集合的结构,集合中的每一个文档也能够有不同的结构. 异步写入 MongoDB 默认全部的写操作都是『不安全 ...
- ios—项目开发需求文档
电子商务产品项目需求方案 模块 标准 接入方式 后台(大致需求说明) 前端 购 实物 多商户接入,可支付商品: 基础功能 功能说明 所有须要 Lbs .城市选择,分享.商区.搜索.返回.关闭 LBS: ...
- nagios插件之登陆防火墙实现session监控
ssh_firewall_session.sh -- 登陆防火墙并运行dis session statistics firewall_check_sessions.c -- 调用上面脚本.过滤出ses ...