golang使用iota

最近学习起了go语言,发现runoob上的入门写的较为简单,但是仍不是很理解,找了一些资料学习下。

iota是golang语言的常量计数器,只能在常量的表达式中使用;这里首先表明了iota的作用。

iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。使用iota能简化定义,主要用于定义枚举,而且很有用。

1、iota只能用于常量表达式

package main
import "fmt"

func main() {
    fmt.Println(iota)
}
# command-line-arguments
.\goplay.go:83:17: undefined: iota

错误: 进程退出代码 2.

2、每次const出现时,都会使得iota初始化为0

package main
import "fmt"

func main() {
	const a = iota //a = 0
	const (
		b = iota //b = 0
		c // c = 1 
	)
    fmt.Println(a,b,c)
}
0 0 1

成功: 进程退出代码 0.

3、自定义类型

自增长的常量如果顶一个为一个枚举类型,实现变量自增

package main
import "fmt"

func main() {
	const (
		Sun = iota //Sun = 0
		Mon // Mon = 1 
		Tue
		Wed
		Thu
		Fri
		Sat
	)
    fmt.Println(Sun,Mon,Tue,Wed,Thu,Fri,Sat)
}
0 1 2 3 4 5 6

成功: 进程退出代码 0.

4、中间插入一个值

package main
import "fmt"

func main() {
	const (
		Sun = iota //Sun = 0
		Mon // Mon = 1 
		Tue = 7
		Thu= iota   // 3
		Fri         //4
	)
    fmt.Println(Sun,Mon,Tue,Thu,Fri)
}

5、掩码表示

package main
import "fmt"

func main() {
    const(
    	IgEggs = 1 << iota          //1 << 0 whic is  00000001
		IgChocolate                 // 1 << 1 which is 00000010
		IgNuts                      // 1 << 2 which is 00000100 
        //IgStrawberries              // 1 << 3 which is 00001000 
        //IgShellfish                 // 1 << 4 which is 00010000 
    )
    fmt.Println(IgEggs,IgChocolate,IgNuts)
}
1 2 4

发现每次可以左移一位,因此对于定义数量级大有裨益

const (
    _           = iota                   // ignore first value by assigning to blank identifier
    KB ByteSize = 1 << (10 * iota) // 1 << (10*1)
    MB                                   // 1 << (10*2)
    GB                                   // 1 << (10*3)
    TB                                   // 1 << (10*4)
    PB                                   // 1 << (10*5)
    EB                                   // 1 << (10*6)
    ZB                                   // 1 << (10*7)
    YB                                   // 1 << (10*8)
)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值