首页 > 编程语言 > 详细

go 语言学习笔记 0001 --> iota

时间:2019-03-05 23:56:52      阅读:236      评论:0      收藏:0      [点我收藏+]

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

go 语言学习笔记 0001 --> iota

原文:https://www.cnblogs.com/haiton/p/10480473.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!