簡體   English   中英

iota 的確切含義是什么?

[英]What's the exact meaning of iota?

在下面的代碼中:

const (
    signature uint32 = 0xae3179fb
    dhkxGroup = 2

    ReplySuccessful byte = iota
    ReplyBufferCorrupted
    ReplyDecryptFailed
    ReplySessionExpired
    ReplyPending
)

ReplySuccessful被編譯成2 ,而我認為它應該definitly為零 如果我移動signaturedhkxGroup下面ReplyPending ,然后ReplySuccessful變為0。

為什么是這樣?

附注。 對我來說,使用 iota 的唯一“好處”是您可以省略分配給后續常量的值,以便您可以輕松修改/插入新值。 但是,如果 iota 沒有固定為零,它可能會導致大問題,尤其是在執行諸如通信協議之類的事情時。

規范定義了 iota 在 Go 中的用法(強調了添加):

在常量聲明中,預先聲明的標識符 iota 表示連續的無類型整數常量。 它的值是該常量聲明中相應ConstSpec的索引,從零開始。

請注意,索引是相對於ConstSpec ,基本上意味着當前的const塊。

特別感興趣的可能是提供的示例:

 const ( a = 1 << iota // a == 1 (iota == 0) b = 1 << iota // b == 2 (iota == 1) c = 3 // c == 3 (iota == 2, unused) d = 1 << iota // d == 8 (iota == 3) )

注意第 3 行(iota 值 2)未使用。 您基本上是相同的,首先是兩個未使用的值。

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

const (
    signature uint32 = 0xae3179fb
    dhkxGroup = 2
)

const (
    ReplySuccessful byte = iota
    ReplyBufferCorrupted
    ReplyDecryptFailed
    ReplySessionExpired
    ReplyPending
)

在操場上看到它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM