首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >爱奥塔的确切含义是什么?

爱奥塔的确切含义是什么?
EN

Stack Overflow用户
提问于 2021-07-12 10:10:54
回答 1查看 639关注 0票数 4

在以下守则中:

代码语言:javascript
复制
const (
    signature uint32 = 0xae3179fb
    dhkxGroup = 2

    ReplySuccessful byte = iota
    ReplyBufferCorrupted
    ReplyDecryptFailed
    ReplySessionExpired
    ReplyPending
)

ReplySuccessful被编译成2,而我认为它应该是0。如果我将signaturedhkxGroup移动到ReplyPending下面,那么ReplySuccessful就变成0。

为什么会这样呢?

PS。对我来说,使用iota的唯一“好处”是可以省略分配给以后的常量的值,这样就可以轻松地修改/插入新的值。然而,如果iota不是固定的为零,它可能会导致大问题,特别是在做像通信协议这样的事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-12 10:16:50

等级库在Go中定义了iota的用法(重点是添加的):

在常量声明中,预先声明的标识符iota表示连续的非类型整数常量。的值是该常量声明中相应的 ConstSpec 的索引,从零开始。

注意,索引相对于ConstSpec,基本上意味着当前的const块。

特别令人感兴趣的可能是提供的例子:

(a=1 << iota // a == 1 (iota == 0) b=1 << iota // b == 2 (iota == 1) c=3/c == 3 (iota == 2,未使用)d=1 << iota // d == 8 (iota == 3)

注意,第3行(iota值2)未使用。基本上相同,两个未使用的值放在第一位。

您可能在代码中的意思是:

代码语言:javascript
复制
const (
    signature uint32 = 0xae3179fb
    dhkxGroup = 2
)

const (
    ReplySuccessful byte = iota
    ReplyBufferCorrupted
    ReplyDecryptFailed
    ReplySessionExpired
    ReplyPending
)

看吧,在操场上

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68345567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档