zoukankan      html  css  js  c++  java
  • go 语言学习笔记 0001 > iota

    go语言中预置了一个预定义常量 iota

    这个东西有个很奇怪的特性,会根据 const 关键字改变值

    默认的,iota在const出现的时候会初始化为0,而后不断递加1,直到出现第二个const关键字

    const (
    	countagn1 = 2 << iota // 2 0
    	countagn2 = 2 << iota // 4 2
    	countagn3 = 2 << iota // 8 6
    )
    // 00010 上面的计算结果:iota 不是递加然后加上常量值,而是递加位数,在常量值的二进制数位基础上左移
    const (
    	countagn4 = 3 << iota // 3 0  3*2^0
    	countagn5 = 3 << iota // 6 1  3*2^1
    	countagn6 = 3 << iota // 12 2 3*2^2
    )
    // 00011 所以,口算iota的计算结果,直接在iota的基础上乘以2的iota次方
    
    func main(){
    	fmt.Println("countagn1",countagn1)
    	fmt.Println("countagn2",countagn2)
    	fmt.Println("countagn3",countagn3)
    	fmt.Println("countagn4",countagn4)
    	fmt.Println("countagn5",countagn5)
    	fmt.Println("countagn6",countagn6)
    }
    
    // OUT 
    
    countagn1 2
    countagn2 4
    countagn3 8
    countagn4 3
    countagn5 6
    countagn6 12
    

    结论都写在代码里了,iota对常量的影响并不是相加,而是在常量的二进制数值上进行对应的位移(>>也是可以的),那么由于二进制的表示方式,每位移一次,就是乘以2,所以,常量会以2的iota次方变化。

  • 相关阅读:
    spring前两天
    代理模式
    学习spring第三天
    Spring集成MyBatis配置文件
    学习spring第二天
    学习spring第一天
    Bind关闭递归查询
    织梦DedeCMS v5.7 实现导航条下拉菜单
    Debian下修改系统时间的方式
    js禁止页面复制功能禁用页面右键菜单示例代码
  • 原文地址:https://www.cnblogs.com/haiton/p/10480473.html
Copyright © 2011-2022 走看看