7*4 2013-01-20 16:07 采纳率: 50%
浏览 249
已采纳

在《围棋》中,哪种是代表枚举的习惯用法?

I'm trying to represent a simplified chromosome, which consists of N bases, each of which can only be one of {A, C, T, G}.

I'd like to formalize the constraints with an enum, but I'm wondering what the most idiomatic way of emulating an enum is in Go.

转载于:https://stackoverflow.com/questions/14426366/what-is-an-idiomatic-way-of-representing-enums-in-go

  • 写回答

6条回答 默认 最新

  • local-host 2013-01-20 16:15
    关注

    Quoting from the language specs:Iota

    Within a constant declaration, the predeclared identifier iota represents successive untyped integer constants. It is reset to 0 whenever the reserved word const appears in the source and increments after each ConstSpec. It can be used to construct a set of related constants:

    const (  // iota is reset to 0
            c0 = iota  // c0 == 0
            c1 = iota  // c1 == 1
            c2 = iota  // c2 == 2
    )
    
    const (
            a = 1 << iota  // a == 1 (iota has been reset)
            b = 1 << iota  // b == 2
            c = 1 << iota  // c == 4
    )
    
    const (
            u         = iota * 42  // u == 0     (untyped integer constant)
            v float64 = iota * 42  // v == 42.0  (float64 constant)
            w         = iota * 42  // w == 84    (untyped integer constant)
    )
    
    const x = iota  // x == 0 (iota has been reset)
    const y = iota  // y == 0 (iota has been reset)
    

    Within an ExpressionList, the value of each iota is the same because it is only incremented after each ConstSpec:

    const (
            bit0, mask0 = 1 << iota, 1<<iota - 1  // bit0 == 1, mask0 == 0
            bit1, mask1                           // bit1 == 2, mask1 == 1
            _, _                                  // skips iota == 2
            bit3, mask3                           // bit3 == 8, mask3 == 7
    )
    

    This last example exploits the implicit repetition of the last non-empty expression list.


    So your code might be like

    const (
            A = iota
            C
            T
            G
    )
    

    or

    type Base int
    
    const (
            A Base = iota
            C
            T
            G
    )
    

    if you want bases to be a separate type from int.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记