Go语言的iota语法糖

在做项目的时候遇到了如下的用法,一开始不太理解什么意思,后来记起来了Go语言中含有一个语法糖iota
在这里插入图片描述

1. iota是Go语言中的计数器,它只能在常量表法式中使用。并且只能用于int类型的常量。

a := iota // 编译错误,只能在常量表达式中使用

在这里插入图片描述
2. iota是一个计数器,iota可以将常量初始化为0,在第一个常量后面加上iota,则后序的常量默认递增,使用iota可以简化定义,在常量递增的情况下很有用。

const num = iota // num = 0

const (
	a = iota // a = 0
	b        // b = 1
	c		 // c = 2	
	d		 // d = 3
)
const (
	upsertPolicy = iota // upsertPolicy = 0
	insertPolicy        // insertPolicy = 1
	updatePolicy        // updatePolicy = 2
)

3. 也可以自定义类型,但是要保证类型式int类型

type newInt int
const (
	f newInt = iota // f = 0
	i               // i = 1
	j               // j = 2
)

4. 可以通过下划线跳过不想要的值

const (
	m = iota // m = 0
	_
	_
	n 		 // n = 3
)

5. 可以表示左移和右移动

const (
	y = 2 >> iota // y = 2,y右移0位
	x             // x = 1,x右移1位
)
const (
	_ = iota
	l = 1 << iota // l = 2,l左移1位
	h             // h = 4,h左移2位
)

6. 同理可以定义数量级

const (
	_  = iota
	KB = 1 << (10 * iota) // KB = 1024,表示1向左移动10*1位
	MB                    // MB = 1024*1024,表示向左移动10*2位
)

7.iota以行位单位,同一行的iota数值一样

const (
	t, r = iota + 1, iota + 2 // t = 1,r = 2 (iota = 0)
	v, u                      // v = 2,u = 3 (iota = 1)
	p, q                      // p = 3,q = 4 (iota = 2)
)

8.iota可以实现插队,中间有别的常量会打断iota的递增,要想实现插队则在别的变量后面在加入iota

const (
	frist   = iota // frist = 0
	sencond = 5
	thr     = iota // thrid = 2
	last           // last = 3
)
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值