回答

收藏

在 Go 中表示枚举的惯用方式是什么?

技术问答 技术问答 296 人阅读 | 0 人回复 | 2023-09-12

我试图用 表示一种简化的染色体N 由碱基组成,每个碱基只能是{A,C,T,G}.+ q( j0 l5 \0 ~# ~& R: p
我想用枚举形式化约束,但我想知道在 Go 模拟枚举最常用的方法是什么?( ]5 V7 O; Q, z+ _0 X7 y8 I
                                                                ( l: ?% G; s, Q: T8 p0 `
    解决方案:                                                                % [% a6 }, ]0 K2 @
                                                                引用语言规范:Iota
/ z0 y$ r/ j: }7 E! B0 A常量声明中,预先声明的标识符 iota 表示连续无类型整数常量。每当保留单词 const 出现在源中,每个 ConstSpec 增加后,它将重置为 0。可用于构建一组相关常量:
! A7 y3 p+ p& O
    7 l- {( ?: a% l
  • const (  / iota is reset to        c0 = iota  // c0 ==        c1 = iota  // c1 ==                 c2 = iota  // c2 == 2)const (       a = 1 在 ExpressionList 中,每个 iota 的值是一样的,因为它只在每个 ConstSpec 后增:
    $ Z, u2 q, ]( E( R& @' I+ v( p' }
  • [code]const (       bit0,mask0 = 1
    : w  m) L0 c0 }+ n% j
  • 所以你的代码可能是一样的[code]const (       A = iota        C        T        G)6 [) n+ _+ B2 u( o+ _
或者
: v! f* K3 z$ T( [4 D2 g! I1 G1 ^
    type Base intconst (       A Base = iota        C        T        G)
    3 a: k$ A, ~# ^$ T" L9 K3 ^
如果你想成为和 int 不同类型。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则