go语言中iota和左移右移的使用说明
在go语言中iota比较特殊,是一个被编译器修改的常量,在每一个const关键字出现时被重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字就会自动加1
左移运算符"<<“是双目运算符
左移n位就是乘以2的n次方。 其功能把”<<“左边的运算数的各二进位全部左移若干位,由”<<"右边的数指定移动的位数,高位丢弃,低位补0。
右移运算符">>“是双目运算符
右移n位就是除以2的n次方。 其功能是把”>>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数。
package iota import "fmt" func Test() { const( c1 = iota //c1=0 c2 = iota //c2=1 c3 = iota //c3=2 ) fmt.Println("c1 = ",c1," c2 = ",c2," c3 = ",c3,"\n") const( a = 1 << iota //a = 1 b = 1 << iota //b = 2 c = 1 << iota //c = 4 ) fmt.Println("a = ",a," b = ",b," c = ",c,"\n") const( v1 = iota //v1 = 0 v2 //v2 = 1 v3 //v3 = 2 ) fmt.Println("v1 = ",v1," v2 = ",v2," v3 = ",v3,"\n") const( x = 1 <<iota //x = 1 y //y = 2 z //z = 4 ) fmt.Println("x = ",x," y = ",y," z = ",z) }
代码执行结果和上面注释相同:
补充:go语言 iota枚举类型
一.概述
go语言中的枚举,和java中一样,都是从0开始
二.说明
// 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)
二.代码运行结果
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。
相关推荐
-
Go语言获取文件的名称、前缀、后缀
示例代码: package main import ( "fmt" "path" ) func main() { filename := "device/sdk/CMakeLists.txt" filenameall := path.Base(filename) filesuffix := path.Ext(filename) fileprefix := filenameall[0:len(filenameall) - len(filesuffi
-
golang 实现时间戳和时间的转化
说实话,golang的时间转化还是很麻烦的,最起码比php麻烦很多,上码好好学学一下 package main import ( "time" "fmt" ) func main() { //获取当前时间 t := time.Now() //2018-07-11 15:07:51.8858085 +0800 CST m=+0.004000001 fmt.Println(t) //获取当前时间戳 fmt.Println(t.Unix()) //1531293019 /
-
Golang常量iota的使用实例
Codes package main import "fmt" type color byte const ( black color = iota red blue ) func test(c color) { fmt.Println(c) } func main() { const ( x = iota // 0 y // 1 z // 2 ) fmt.Printf("x=%v, y=%v, z=%v\n", x, y, z) const ( _ = iota
-
golang 如何获取文件夹下面的文件列表
golang的文档里面比较容易找到的一个方法是filepath.Walk,这个方法有个问题是会自动递归遍历当前目录的子目录,其实我们通常只是想得到一个目录下面的文件列表,并不需要这么多的信息,同时这个方法代码写起来也比较多比较复杂,我们也没有必要这么做. 如果仅仅是想获取一个目录下面的文件和文件夹的列表,有两个比较简单的方法 利用ioutil的ReadDir方法 package main import ( "fmt" "io/ioutil" ) func main(
-
Go 在 MongoDB 中常用查询与修改的操作
以下所有例子中结构定义如下: type User struct { Id_ bson.ObjectId `bson:"_id"` Name string `bson:"name"` Age int `bson:"age"` JoinedAt time.Time `bson:"joined_at"` Interests []string `bson:"interests"` Num []int `bson:&
-
golang如何获得一个变量的类型
直接使用reflect的TypeOf方法就可以了 fmt.Println(reflect.TypeOf(var)) 补充:golang 获取变量类型的三种方式 Using string formatting func typeof(v interface{}) string { return fmt.Sprintf("%T", v) } Using reflect package func typeof(v interface{}) string { return reflect.Ty
-
Golang Gob编码(gob包的使用详解)
gob是Golang包自带的一个数据结构序列化的编码/解码工具.编码使用Encoder,解码使用Decoder.一种典型的应用场景就是RPC(remote procedure calls). gob和json的pack之类的方法一样,由发送端使用Encoder对数据结构进行编码.在接收端收到消息之后,接收端使用Decoder将序列化的数据变化成本地变量. 基本使用 package main import ( "bytes" "encoding/gob" "
-
go语言中iota和左移右移的使用说明
在go语言中iota比较特殊,是一个被编译器修改的常量,在每一个const关键字出现时被重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字就会自动加1 左移运算符"<<"是双目运算符 左移n位就是乘以2的n次方. 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0. 右移运算符">>"是双目运算符
-
go语言中int和byte转换方式
主机字节序 主机字节序模式有两种,大端数据模式和小端数据模式,在网络编程中应注意这两者的区别,以保证数据处理的正确性:例如网络的数据是以大端数据模式进行交互,而我们的主机大多数以小端模式处理,如果不转换,数据会混乱 参考 :一般来说,两个主机在网络通信需要经过如下转换过程:主机字节序 -> 网络字节序 -> 主机字节序 大端小端区别 大端模式:Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端 低地址 --------------------> 高地址 高
-
深入了解Go语言中goioc框架的使用
目录 goioc 介绍 快速上手 接口介绍 使用 goioc 如何使用 生命周期 实例化 获取对象 结构体字段依赖注入 反射形式使用 goioc 如何使用 接口.结构体.结构体指针 不会自动注入本身 goioc 介绍 goioc 是一个基于 GO 语言编写的依赖注入框架,基于反射来进行编写. 支持泛型: 简单易用的 API: 简易版本的对象生命周期管理,作用域内对象具有生命: 延迟加载,在需要的时候才会实例化对象: 支持结构体字段注入,多层注入: 对象实例化线程安全,作用域内只会被执行一次. 下
-
ASP中用select case代替其他语言中的switch case, default用case else
asp中不能用switch语句,要用select case语句了 简单的介绍一下 选择报表的工作一样,如果语句.然而不同的是,他们可以检查多个值.当然,你有 多个相同的,如果.. else语句,但是这并不总是最好的方法. 选择语句允许一个程序来计算表达式,并试图匹配表达式的值案件标签.如果找到匹 配,程序执行相关的声明.对于SELECT语句的语法如下: select case expression case label_1 statements_1 case label_2 statements
-
C语言中printf()缓冲问题详解
前言 缓冲区又称为缓存,它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区. 缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区. 为什么要引入缓冲区 比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度. 又比如,
-
C语言中的getchar和putchar的使用方法
C语言中的getchar和putchar的使用方法 getchar是以行为单位进行存取的. 当用getchar进行输入时,如果输入的第一个字符为有效字符(即输入是文件结束符EOF,Windows下为组合键Ctrl+Z, Unix/Linux下为组合键Ctrl+D),那么只有当最后一个输入字符为换行符'\n'(也可以是文件结束符EOF,EOF将在后面讨论)时, getchar才会停止执行,整个程序将会往下执行.譬如下面程序段: while((c = getchar()) != EOF){ putc
-
详解C语言中return与exit的区别
详解C语言中return与exit的区别 1,exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的.main函数结束时也会隐式地调用exit函数.exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流.关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件.exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程,而return是返回函数值并退出函数 2,return是语言级别的,它
-
详解 Go 语言中 Map 类型和 Slice 类型的传递
Map 类型 先看例子 m1: func main() { m := make(map[int]int) mdMap(m) fmt.Println(m) } func mdMap(m map[int]int) { m[1] = 100 m[2] = 200 } 结果是 map[2:200 1:100] 我们再修改如下 m2: func main() { var m map[int]int mdMap(m) fmt.Println(m) } func mdMap(m map[int]int) {
-
go语言中range用法
本文实例讲述了go语言中range用法.分享给大家供大家参考.具体分析如下: range是go语言系统定义的一个函数. 函数的含义是在一个数组中遍历每一个值,返回该值的下标值和此处的实际值. 假如说a[0]=10,则遍历到a[0]的时候返回值为0,10两个值. 下面是一个例子:这个例子是求一个数组里面的平均值. 复制代码 代码如下: package main import ( "fmt" ) func main() { sum := 0.0 var avg fl
-
Go 语言中gin使用gzip压缩遇到的问题
最近学习go语言写了个 成都房地产薪酬 网站,抓取网上的招聘信息并进行统计.中间遇到一些坑在这里记录下来方便以后查阅 gzip压缩是每个web应用必不可少的,这项目使用gin作为web框架,gin支持使用中间件,github上有实现好的gzip中间件:gin-contrib/gzip 安装: go get github.com/gin-contrib/gzip 使用: func main() { r := gin.Default() r.Use(gzip.Gzip(gzip.DefaultCom
随机推荐
- 浅析iOS给图片加水印的方法
- Jquery全选与反选点击执行一次的解决方案
- 根据服务器时间作为起始,显示时钟的小程序
- php对象和数组相互转换的方法
- python实现数独算法实例
- CMS不要让MySQL为你流泪
- 自定义ListView实现拖拽ListItem项交换位置(附源码)
- python利用MethodType绑定方法到类示例代码
- SpringMVC实现文件上传和下载功能
- VBS调用Windows API函数的代码
- 详解JavaWeb中的 Listener
- 让低版本浏览器支持input的placeholder属性(js方法)
- 基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
- jquery分页插件jpaginate在IE中不兼容问题
- Jquery实现显示和隐藏的4种简单方式
- JavaScript实现的类字典插入或更新方法实例
- Windows下实现简单的libevent服务器
- 服务器托管六大优势分析
- 另类的文件上传解决方案
- Javacript中自定义的map.js 的方法