栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

引用语言规范:Iota

在常量声明中,预声明的标识符iota表示连续的无类型整数常量。每当保留字const出现在源中时,它将重置为0,并在每个ConstSpec之后递增。它可以用来构造一组相关的常量:

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)

在expressionList中,每个iota的值都是相同的,因为它仅在每个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)

最后一个示例利用了最后一个非空表达式列表的隐式重复。


所以你的代码可能像

const (        A = iota        C        T        G)

要么

type base intconst (        A base = iota        C        T        G)

如果您希望基数是与int分开的类型。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373216.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号