回答

收藏

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

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

我试图用 表示一种简化的染色体N 由碱基组成,每个碱基只能是{A,C,T,G}.2 }& G! G5 H+ w* c4 t* K
我想用枚举形式化约束,但我想知道在 Go 模拟枚举最常用的方法是什么?" M* x0 c, v. N" G
                                                                " ]1 q* X  @$ Q/ G: N' T
    解决方案:                                                                : U! ^4 V0 e) Q1 X
                                                                引用语言规范:Iota
0 N0 M. V1 ~9 B+ F/ `, J常量声明中,预先声明的标识符 iota 表示连续无类型整数常量。每当保留单词 const 出现在源中,每个 ConstSpec 增加后,它将重置为 0。可用于构建一组相关常量:9 M4 [$ r' L' D/ T/ Z
      H4 \1 n9 U/ R9 t! A7 n) y
  • const (  / iota is reset to        c0 = iota  // c0 ==        c1 = iota  // c1 ==                 c2 = iota  // c2 == 2)const (       a = 1 在 ExpressionList 中,每个 iota 的值是一样的,因为它只在每个 ConstSpec 后增:6 p0 t" m8 @' Y: Z3 i
  • [code]const (       bit0,mask0 = 1  `! H, d0 ~- ^. ]$ Q3 S# o
  • 所以你的代码可能是一样的[code]const (       A = iota        C        T        G)
    7 }8 Z; x6 m5 P, P2 O- e' u, K& E
或者
. H0 r) A4 o  l1 j9 R/ e! p
    type Base intconst (       A Base = iota        C        T        G)% j6 J( S! U# J
如果你想成为和 int 不同类型。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则