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次方变化。

  • 相关阅读:
    eslint 的 env 配置是干嘛使的?
    cookie httpOnly 打勾
    如何定制 antd 的样式(theme)
    剑指 Offer 66. 构建乘积数组
    剑指 Offer 65. 不用加减乘除做加法
    剑指 Offer 62. 圆圈中最后剩下的数字
    剑指 Offer 61. 扑克牌中的顺子
    剑指 Offer 59
    剑指 Offer 58
    剑指 Offer 58
  • 原文地址:https://www.cnblogs.com/haiton/p/10480473.html
Copyright © 2011-2022 走看看