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. AI应用平台搭建之旅(上) - 框架篇(附:AICon大会阿里国际Agent应用平台分享)

    前言 LangEngine内源项目发起于阿里巴巴集团内部组织,LangEngine是类似LLM应用开发框架LangChain的纯Java版本.该框架现已正式对外开源:https://github.co ...

  2. AsyncLocal的妙用

    AsyncLocal<T>是一个在.NET中用来在同步任务和异步任务中保持全局变量的工具类. 它允许你在不同线程的同一个对象中保留一个特定值,这样你可以在不同的函数和任务中访问这个值. 这 ...

  3. 基于wvp-GB28181-pro 与 ZLMediaKit 的国标服务器

    官方教程 wvp-GB28181-pro 与 ZLMediaKit 的联调手册 wvp-GB28181-pro wiki ZLMediaKit 基于C++11的高性能运营级流媒体服务框架 地址:Git ...

  4. w3cschool-JUnit测试框架

    什么是 Junit 测试框架? JUnit 是一个回归测试框架,被开发者用于实施对应用程序的单元测试,加快程序编制速度,同时提高编码的质量.JUnit 测试框架能够轻松完成以下任意两种结合: Ecli ...

  5. Access pg walkthrough Intermediate window域渗透

    namp nmap -p- -A -sS -T4 192.168.200.187 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-23 00 ...

  6. WinForm实现无边框窗体的拖动

    一个登录窗体,FormBorderStyle属性设置为None,打开后不能挪动位置,有时候会妨碍使用,有点恶心.网上找了段内容,实现拖动效果: #region 无边框拖动效果,Form被Picture ...

  7. 9. SpringCloud Alibaba Sentinel 流量控制、熔断降级、系统负载,热点规则的部署设置讲解

    9. SpringCloud Alibaba Sentinel 流量控制.熔断降级.系统负载,热点规则的部署设置讲解 @ 目录 9. SpringCloud Alibaba Sentinel 流量控制 ...

  8. 一键实现风险识别+处理,天翼云AOne助手尽在“掌”握!

    随着企业数字化建设的不断加速,优化站点性能与响应速度成为当今时代的一个重要课题.对于政务.金融类机构来说,其门户网站.信用卡中心等代表着对外形象,如果出现访问不通或者时延严重的现象将影响业务办理效率以 ...

  9. Django设置跨域请求解决方案

    Django设置跨域请求解决方案 在现代Web开发中,跨域资源共享(CORS,Cross-Origin Resource Sharing)是一个常见的需求.尤其是在前后端分离的开发模式下,Django ...

  10. Vue项目实战:构建你的第一个项目

    Vue项目实战:从零到一构建你的第一个应用 准备工作 在开始使用Vue之前,请确保您已经安装了Node.js 16.0或更高版本.Node.js是运行Vue项目所必需的JavaScript运行环境. ...