golang中的iota

golang中的iota

iota是golang语言的常量计数器,只能在常量的表达式中使用。

特性:

  1. iota只能在常量的表达式中使用
  2. 每次const出现时,都会让iota初始化为0【自增长】
    const a = iota 
    const (
    	b = iota 	// b=0
    	c			// c=1
    )
    
  3. 自定义类型
    自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。
    type week int
    const (
    	Mon week = iota	// 0
    	Tue 			// 1
    	Wed				// 2
    	Thu				// 3
    )
    
  4. 可跳过的值
    我们可以使用下划线跳过不想要的值。
    const (
    	OutMode int = iota 	// 0
    	OutMono				// 1
    	OutStereo			// 2
    	_
    	_
    	OutSurround			// 5
    )
    
  5. 位掩码表达式
    const (
    	IgEggs Allergen = 1 << iota 	// 1 << 0  
    	IgChocolate								// 1 << 1 
    )
    
    这个工作是因为当你在一个const组中仅仅有一个标识符在第一行的时候,它将使用增长的iota取得前面的表达式并且再运用它。在Go语言的spec中,这就是所谓的隐性重复最后一个非空的表达式列表。
  6. 定义在一行的情况
    const (
    	Apple, Banana = iota + 1, iota + 2
    	Cherimoya, Durian
    	Elderberry, Fig
    )
    
    iota在下一行增长,而不是立即取得它的引用
    // Apple:1
    // Banana:2
    // Cherimoya:2
    // Durian:3
    // Elderberry:3
    /// Fig:4
  7. 中间插队
    const (
    	i = iota
    	j = 3.14
    	k = iota
    	l
    )
    
    那么打印出来的结果是i=0,j=3.14,k=2,l=3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值