go语言中iota和左移右移的使用说明

 更新时间:2021年05月08日 08:49:53   作者:Coldestmonth  
这篇文章主要介绍了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)

二.代码运行结果

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • Golang使用lua脚本实现redis原子操作

    Golang使用lua脚本实现redis原子操作

    这篇文章主要介绍了Golang使用lua脚本实现redis原子操作,本文通过实例代码给大家介绍的非常详细,对大家的工作或学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Golang channel关闭后是否可以读取剩余的数据详解

    Golang channel关闭后是否可以读取剩余的数据详解

    这篇文章主要介绍了Golang channel关闭后是否可以读取剩余的数据,文章通过一个测试例子给大家详细的介绍了是否可以读取剩余的数据,需要的朋友可以参考下
    2023-09-09
  • GO中对map排序的实现

    GO中对map排序的实现

    本文主要介绍了GO中对map排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Go语言编译原理之变量捕获

    Go语言编译原理之变量捕获

    这篇文章主要为大家介绍了Go语言编译原理之变量捕获示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • golang开发go包依赖管理godep使用教程

    golang开发go包依赖管理godep使用教程

    这篇文章主要为大家介绍了golang开发go包依赖管理godep使用教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • Go语言数据类型详细介绍

    Go语言数据类型详细介绍

    这篇文章主要介绍了Go语言数据类型详细介绍,Go语言数据类型包含基础类型和复合类型两大类,下文关于这两类型的相关介绍,需要的小伙伴可以参考一下
    2022-03-03
  • Go打包静态文件的两种方式

    Go打包静态文件的两种方式

    使用 Go 开发应用的时候,有时会遇到需要读取静态资源的情况,如果不打包处理这种静态文件:发布单独挂载这种静态文件相对比较麻烦,就有人会想办法把静态资源文件打包进 Go 的程序文件中,下面介绍两种打包方式:go-bindata、go:embed,需要的朋友可以参考下
    2024-04-04
  • golang类型断言的实现示例

    golang类型断言的实现示例

    在Go语言中,类型断言用于从接口类型获取其具体类型的值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • GO语言实现二维码扫码的示例代码

    GO语言实现二维码扫码的示例代码

    你对二维码扫码的流程有困惑吗,这篇文章就结合笔者自身的开发经验进行分享,让大家熟悉并掌握此功能,感兴趣的小伙伴快跟随小编一起学习一下吧
    2023-06-06
  • Go标准库常见错误分析和解决办法

    Go标准库常见错误分析和解决办法

    Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓"工欲善其事,必先利其器",本文将深入剖析Go标准库使用中的常见错误,帮助开发者避开这些坑,写出更加健壮的代码
    2025-04-04

最新评论