iota 特殊常量

在go语言中iota比较特殊,是一个被编译器修改的常量,在每一个const关键字出现时被重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字就会自动加1

package main

import "fmt"

func main() {
// 1.iota常量自动生成器,每隔一行,自动累加1
// 2.iota给常量赋值用
const (
a = iota //0
b = iota //1
c = iota //2
)
fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c) // 3.iota遇到const,重置为0
const d = iota
fmt.Printf("d = %d\n", d) // 4 可以只写一个iota
const (
a1 = iota //0
b1 //1
c1 //2
)
fmt.Printf("a1 = %d, b1 = %d, c1 = %d\n", a1, b1, c1) // 5 如果是同一行,值都一样
const (
i = iota
j1, j2, j3 = iota, iota, iota
k = iota
) fmt.Printf("i = %d, j1 = %d, j2 = %d, j3 = %d, k = %d\n", i, j1, j2, j3, k)
}
a = 0, b = 1, c = 2
d = 0
a1 = 0, b1 = 1, c1 = 2
i = 0, j1 = 1, j2 = 1, j3 = 1, k = 2

左移运算符"<<" 双目运算符

左移n位就是乘以2的n次方。 其功能把<<左边的运算数的各二进位全部左移若干位,由<<右边的数指定移动的位数,高位丢弃,低位补0。

package main

import "fmt"

func main() {
const (
a = 1 << iota //a = 1 1乘以2的0次方 1*1
b = 1 << iota //b = 2 1乘以2的1次方 1*2
c = 1 << iota //c = 4 1乘以2的2次方 1*4
)
fmt.Println("a = ", a, " b = ", b, " c = ", c, "\n")
}
a =  1  b =  2  c =  4

右移运算符">>" 双目运算符

右移n位就是除以2的n次方。 其功能是把>>左边的运算数的各二进位全部右移若干位,>>右边的数指定移动的位数。

package main

import "fmt"

func main() {
const (
a = 1 >> iota //a = 1 1除以2的0次方 1/1
b = 2 >> iota //b = 1 2除以2的1次方 2/2
c = 4 >> iota //c = 1 4除以2的2次方 4/4
d = 4 >> iota //d = 0 4除以2的3次方 4/8
)
fmt.Println("a = ", a, " b = ", b, " c = ", c, " d = ", d,"\n")
}
a =  1  b =  1  c =  1 d = 0

go语言中iota和左移<< 右移<<的更多相关文章

  1. C语言中的“>>”和“<<”

    http://baike.1688.com/doc/view-d1750791.html C语言中的“>>”和“<<” [标签:程序设计] 浏览次数:68937提问时间:200 ...

  2. Java语言中:float、double数据类型在内存中是如何存储的

    引用参考 https://www.cnblogs.com/chenmingjun/p/8415464.html#4291528 https://blog.csdn.net/yansmile1/arti ...

  3. C语言中,头文件和源文件的关系(转)

    简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句, ...

  4. C 语言中 setjmp 和 longjmp

    在 C 语言中,我们不能使用 goto 语句来跳转到另一个函数中的某个 label 处:但提供了两个函数——setjmp 和 longjmp来完成这种类型的分支跳转.后面我们会看到这两个函数在处理异常 ...

  5. c语言中的scanf在java中应该怎么表达,Scanner类。

    1 java是面向对象的语言 它没有像C语言中的scanf()函数,但是它的类库中有含有scanf功能的函数 2 java.util包下有Scanner类 Scanner类的功能与scanf类似 3 ...

  6. C语言中do...while(0)的妙用(转载)

    转载来自:C语言中do...while(0)的妙用,感谢分享. 在linux内核代码中,经常看到do...while(0)的宏,do...while(0)有很多作用,下面举出几个: 1.避免goto语 ...

  7. C语言中,定义的含义?声明的含义?它们之间的区别是什么?

    在C语言中,对于定义和声明,也许我们非常的熟悉,但不一定真正的了解! 定义的含义:所谓定义,就是创建(编译器)一个对象,为这个对象分配一块内存空间并取名,也就是我们平常所说的变量名或对象名,一旦这个名 ...

  8. C++中函数的默认参数和C语言中volatile的学习

    1.函数默认参数 1 int func(int a,int b=10) 2 { 3 return a*b; 4 } 5 6 int main() 7 { 8 int c=func(2); 9 cout ...

  9. C语言中qsort函数用法

    C语言中qsort函数用法-示例分析    本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值. 分享给大家供大家参考.C语言中的qsort ...

  10. c语言中time相关函数

    工作中遇到的函数: int seed = time(NULL); srand(seed); signal(SIGINT, stop); signal(SIGUSR1, sig_usr1); 搜time ...

随机推荐

  1. Qt音视频开发37-识别鼠标按下像素坐标

    一.前言 在和视频交互过程中,用户一般需要在显示视频的通道上点击对应的区域,弹出对应的操作按钮,将当前点击的区域或者绘制的多边形区域坐标或者坐标点集合,发送出去,通知其他设备进行处理.比如识别到很多人 ...

  2. Qt编写安防视频监控系统60-子模块4云台控制

    一.前言 云台控制是一个很老很基础的模块了,视频监控系统中必备的特殊模块之一,可以对选中的通道的摄像机(ONVIF协议),进行云台控制,可以控制球机的上下左右等各个方位的移动,还可以调节变倍步长,至于 ...

  3. Pycharm创建工程及运行程序入门教程

    pycharm基础使用步骤 1.下载pycharm2.新建Python工程(1)如下,点击Create New Project (2)选择保存位置,点击create. (3)命名,打开界面如下 (4) ...

  4. Web端IM聊天消息该不该用浏览器本地存储?一文即懂!

    本文由转转技术团队刘筱雨分享,原题"一文读懂浏览器本地存储:Web Storage",下文进行了排版和内容优化. 1.引言 鉴于目前浏览器技术的进步(主要是HTML5的普及),在W ...

  5. IM扫码登录技术专题(三):通俗易懂,IM扫码登录功能详细原理一篇就够

    本文引用了作者"大古同学"的"二维码扫码登录是什么原理"一文的主要内容,为了更好的理解和阅读,即时通讯网收录时有修订和改动,感谢原作者的分享. 1.引言 自从微 ...

  6. k8s集群部署mysql完整过程记录

    挂载MySQL数据卷 在k8s集群中挂载MySQL数据卷 需要安装一个NFS. 在主节点安装NFS yum install -y nfs-utils rpcbind 在主节点创建目录 mkdir -p ...

  7. GeoServer简介

    GeoServer简介 GeoServer的地图服务主要通过以下几个层次进行组织 工作区(Workspace):工作区是GeoServer中的顶级组织单位,通常用于区分不同的项目或用户.每个工作区可以 ...

  8. [LC1302] 层数最深叶子节点的和

    题目概述 给你一棵二叉树的根节点 root ,请你返回 层数最深的叶子节点的和 . 基本思路 这是一个简单的树的遍历的问题,可以用bfs或者dfs来解题.这里采用dfs来解,在遍历的过程中,只需要用全 ...

  9. Solution Set -「LOCAL」冲刺省选 Round X

    \(\mathscr{Summary}\)   时间利用效率?   同学,你的效率呢?   我真不知道中途几个小时干了啥,我也不知道我实在划水.神游还是真的在自闭想题.   虽然真实考场肾上腺素不会允 ...

  10. Spring 注解Annotation代替XML实现零配置

    1. 使用Spring注解来注入属性1.1. 使用注解以前我们是怎样注入属性的类的实现: public class UserManagerImpl implements UserManager { p ...