安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

golang2021变量基础(18)

8月8日 游鱼坊投稿
  Go语言现阶段没有枚举类型,但是可以使用const常量配合上一节《Go语言常量》中介绍的iota来模拟枚举类型,请看下面的代码:
  typeWeaponint
  const(
  ArrowWeaponiota开始生成枚举值,默认为0
  Shuriken
  SniperRifle
  Rifle
  Blower
  )
  输出所有枚举值
  fmt。Println(Arrow,Shuriken,SniperRifle,Rifle,Blower)
  使用枚举类型并赋初值
  varweaponWeaponBlower
  fmt。Println(weapon)
  代码输出如下:
  01234
  4hr代码说明如下:
  第1行中,将int定义为Weapon类型,就像枚举类型的本质是一个int类型一样。当然,某些情况下,如果需要int32和int64的枚举,也是可以的。
  第4行中,将常量Arrow的类型标识为Weapon,这样标识后,const下方的常量可以使用Weapon作为默认类型。该行使用iota进行常量值自动生成,iota的起始值为0,一般情况下也是建议枚举从0开始,让每个枚举类型都有一个空值,方便业务和逻辑的灵活使用。
  一个const声明内的每一行常量声明,将会自动套用前面的iota格式,并自动增加,类似于电子表格中单元格自动填充的效果,只需要建立好单元格之间的变化关系,拖动右下方的小点就可以自动生成单元格的值。
  当然,iota不仅可以生成每次增加1的枚举值。还可以利用iota来做一些强大的枚举常量值生成器。下面的代码可以方便的生成标志位常量:
  const(
  FlagNone1iota
  FlagRed
  FlagGreen
  FlagBlue
  )
  fmt。Printf(ddd,FlagRed,FlagGreen,FlagBlue)
  fmt。Printf(bbb,FlagRed,FlagGreen,FlagBlue)
  代码输出如下:
  248
  101001000
  在代码中编写一些标志位时,我们往往手动编写常量值,常量值特别多时,很容易重复或者写错,因此,使用ioto自动生成更加方便。
  代码说明如下:
  第2行中iota使用了一个移位操作,每次将上一次的值左移一位(二进制位),以得出每一位的常量值。
  第8行,将3个枚举按照常量输出,分别输出2、4、8,都是将1每次左移一位的结果。
  第9行,将枚举值按二进制格式输出,可以清晰地看到每一位的变化。
  将枚举值转换为字符串
  枚举在C中是一个独立的类型,可以通过枚举值获取该值对应的字符串。例如,C中Week枚举值Monday为1,那么可以通过Week。Monday。ToString()函数获得Monday字符串。
  Go语言中也可以实现这一功能,代码如下所示:
  转换字符串:
  packagemain
  importfmt
  声明芯片类型
  typeChipTypeint
  const(
  NoneChipTypeiota
  CPU中央处理器
  GPU图形处理器
  )
  func(cChipType)String()string{
  switchc{
  caseNone:
  returnNone
  caseCPU:
  returnCPU
  caseGPU:
  returnGPU
  }
  returnNA
  }
  funcmain(){
  输出CPU的值并以整型格式显示
  fmt。Printf(sd,CPU,CPU)
  }
  运行结果:
  CPU1
  代码说明如下:
  第6行,将int声明为ChipType芯片类型。
  第9行,将const里定义的常量值设为ChipType类型,且从0开始,每行值加1。
  第14行,定义ChipType类型的方法String(),返回值为字符串类型。
  第1522行,使用switch语句判断当前的ChitType类型的值,返回对应的字符串。
  第30行,按整型的格式输出CPU的值。
  String()方法的ChipType在使用上和普通的常量没有区别。当这个类型需要显示为字符串时,Go语言会自动寻找String()方法并进行调用。
投诉 评论 转载

依托新能源新技术日照港构建港口零碳排放示范区齐鲁网闪电新闻10月9日讯未来港口发展中,日照港将依托新技术、新设备继续提升码头整体作业效率;推进码头生产管理系统子系统功能开发,完全实现自动化码头的智能调度、智能操作、智慧交……家用台式机的寿命有多少年?1、保养的话的话,810都没问题。一般情况下,台式机只要保养好,使用频率不是极高的话,使用810年是可以的。2、保养一般的话,58年没问题。如果保养一般,或者……红米k40使用感受双十二在某多买了红米k40,12256顶配,已经近两个月了,减单评价一下,这部手机的e4屛幕,870cpu都不错,流畅度对比neo5感觉稍差,但是细微差别可忽略,也许是米柚12……golang2021变量基础(18)Go语言现阶段没有枚举类型,但是可以使用const常量配合上一节《Go语言常量》中介绍的iota来模拟枚举类型,请看下面的代码:typeWeaponintconst……北京邮电大学与银河航天初步完成5G卫星接入组网通信测试来源:中国新闻网中新网北京10月22日电(记者郭超凯)2021中国无线电大会10月20日至21日在北京召开。记者从会上获悉,北京邮电大学与银河航天初步完成5G卫星接入组网通信测……阿里快刀斩乱麻,满足受侵害女员工诉求期待成为预防性骚扰标杆阿里快刀斩乱麻,满足受侵害女员工诉求上文《阿里CEO羞愧道歉,为什么要等女员工说:鱼死网破,永不屈服?》我们已经讨论过,女员工被上级要求陪酒灌醉,被客户猥亵,后又被上级四……可聊天可看视频的三防功能手机!AGMM7测评体验分享Hello,大家好!随着科技的发展越来越快,智能手机也是越来越普及,而之前使用的按键手机渐渐地退出了舞台,淡出人们的视野。而对于老年人来说,按键手机才是他们的需要,智能手机的复……鄞州淘宝培训,淘宝运营怎么学习?鄞州淘宝培训,淘宝运营怎么学习?首先,运营核心。运营的核心是流量。通过运营获得更多的关注,得到更多的流量。如果把全网的流量导向某个商品,不成功很难。其次,基础运营。……不输比亚迪的混动系统,还有剪刀门加持,奕炫MAX能成为黑马?如今的汽车市场,洗牌已经从暗地摆在了明面上,比如传统的燃油车市场虽然阶级固化,但在新能源市场却是充满着新的机遇跟可能,蔚来等自主新势力,也能在高端市场站稳脚跟,甚至比BBA的新……小米10新机用了5个月,严重掉帧,上网严重掉网,你们的呢?我用了一个多月,难道就我一个人没问题?没问题,我的从没出现过问题。小米10除了重点,没发现啥毛病!刚买的手机摄像头就没办法聚焦,然后换了新机,麦克风经常出问题!……双11各电视品牌动作预判双11各电视品牌预计动作:TCL:TCL当前海外库存量400万台、国内库存量100万台,910月计划大力度清理库存。TCL电子与TCL华星之间采购面板价格并不……高德地图车道级导航完美适配OPPOFindN折叠屏手机近日,OPPO正式发布了旗下折叠屏手机OPPOFindN,高德地图作为该款旗舰手机的技术研发合作伙伴,在发布会中亮相。在演讲环节中,OPPO宣布OPPOFindN上用户可……
罕见出手,SpaceX为何收购一家物联网公司?真空泵油雾分离器生产厂家有哪些?今日上市希荻微燃油车或将成为过去,比亚迪推出续航1000km电动汽车EK推出多功能螺丝刀官方指导价格19。9欧元三星S21降价让路,买一台?微信发图片要收钱,这是真的吗?ModelS车主维权755天,特斯拉败了销售欺诈成立,被判退智能手表侵入儿童生活,该如何应对3000元档手机怎么选?小米10S一加9R对阵,骁龙870上中芯国际做对了?俄传来两个新动作,国内院士的呼吁该重视了苹果硬件订阅服务费用曝光租iPhone一个月划算么?印度神童预言疫情真的可信吗?世上有很多巧合,不可迷信!一代歌后邓丽君真正死因曝光震惊两岸退休之后一个月多少钱退休金,是你心里比较合理的价位?2020年最新感恩节宣传标语汇编Win10下如何更改默认应用秋天的树叶作文650字反超大润发华润万家,我国本土最大超市诞生,年收入989亿羊了个羊骗人看广告?律师发声,警方紧急提醒出轨的行为其实有助于优化夫妻间的关系城野医生早安面膜需要洗吗城野医生早安面膜保质期多久关于动物园的小学作文六篇电风扇噪音大怎么办

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利