c语言iota怎么用,常量及iota的简单用法

一,常量

介绍

常量是在编译时期创建的,即使当定义在函数内,并且只能是numbers,characters(runes),strings或者booleans。由于编译时的限制,定义它们的表达式必须是可由编译器求值的常量表达式。

常量表达式案例

1 << 4是一个常量表达式。

math.Sin(math.Pi/3)不是常量表达式,因为math.Sin是在运行时执行的。

二,iota的使用注意事项

官方介绍:在Go中,枚举常量的创建推荐使用iota,由于iota能够作为表达式的一部分且能够隐式的重复,因此很容易的去构建复杂的值集。

官方使用案例

type ByteSize float64

const (

_ = iota // ignore first value by assigning to blank identifier

KB ByteSize = 1 << (10 * iota)

MB

GB

TB

PB

EB

ZB

YB

)

func (b ByteSize) String() string {

switch {

case b >= YB:

return fmt.Sprintf("%.2fYB", b/YB)

case b >= ZB:

return fmt.Sprintf("%.2fZB", b/ZB)

case b >= EB:

return fmt.Sprintf("%.2fEB", b/EB)

case b >= PB:

return fmt.Sprintf("%.2fPB", b/PB)

case b >= TB:

return fmt.Sprintf("%.2fTB", b/TB)

case b >= GB:

return fmt.Sprintf("%.2fGB", b/GB)

case b >= MB:

return fmt.Sprintf("%.2fMB", b/MB)

case b >= KB:

return fmt.Sprintf("%.2fKB", b/KB)

}

return fmt.Sprintf("%.2fB", b)

}

iota每遇到一个const都会清零

默认是从0开始,所以上面的( - = iota )表示抛弃第一个为0的数据

const 集合中从上到下,iota是逐步递增的,案例 1 << (10 * iota) 中的iota值为1,所以实际上是1左移10位等于1024,MB则是左移20位。依次类推知道YB。

民间案例

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

)

结果:

0 1 2 ha ha 100 100 7 8

通过该案例可以明显看到iota遇到主动赋值的条目时,并不会终止累加,而是会继续隐式增加iota的值。

有疑问加站长微信联系(非本文作者)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值