前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go语言_iota用法

Go语言_iota用法

作者头像
Zoctopus
发布2018-08-03 17:29:52
6750
发布2018-08-03 17:29:52
举报

一、介绍

iota,特殊常量,可以认为是一个可以被编译器修改的常量。

在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。

iota 可以被用作枚举值:

代码语言:javascript
复制
package main
import "fmt"
func main() {
    const (
        a = iota   //0
        b = iota   //1
        c = iota   //2
    )
    fmt.Println(a,b,c)
}

第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2 可以简写为如下形式:

代码语言:javascript
复制
    const (
        a = iota   
        b        
        c 
    )

二、用法

1,作为累加器

代码语言:javascript
复制
package main

import "fmt"

func main() {
    const (
            a = iota   //0
            b          //1
            c          //2
            d = "ha"   //独立值,iota += 1
            e          //"ha"   iota += 1
            f = 100    //iota +=1
            g          //100  iota +=1
            h = iota   //7,恢复计数
            i          //8
    )
    fmt.Println(a,b,c,d,e,f,g,h,i)
}

2,移位运算

代码语言:javascript
复制
package main
import "fmt"
const (
    i=1<<iota  //1<<0  二进制 0000 0001
    j=3<<iota  //3<<1  二进制 0000 0110
    k       //3<<2  二进制 0000 1100
    l       //3<<3  二进制 0001 1000
)

func main() {
    fmt.Println("i=",i)
    fmt.Println("j=",j)
    fmt.Println("k=",k)
    fmt.Println("l=",l)
}

简单表述:

  • i=1:左移0位不变,所以仍为1;
  • j=3:左移一位从0000 0011变为0000 0110,所以为6;
  • k=3:左移两位从0000 0011变为0000 1100,所以为12;
  • l=3:左移三位从0000 0011变为0001 1000,所以为24。

三、参考资料

iota: Golang 中优雅的常量

iota:Elegant Constants in Golang

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-07-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、介绍
  • 二、用法
    • 1,作为累加器
      • 2,移位运算
      • 三、参考资料
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档