go枚举的实现
golang中枚举的实现是通过const和iota关键字来实现的
1.枚举的作用
是一种重要的数据类型,由一组键值对组成,通常用来在编程语言中充当常量的标识符。使用枚举代替整数传入参数时,可以将参数的范围缩小到枚举集合内,防止了不可用的参数的传入。枚举自带说明性,使得代码更加易读。
枚举常用于星期、类型、等级、状态等。
iota是一个常量计数器,和const搭配使用可以实现枚举的效果
1.iota
代表了一个连续的整形常量,0,1,2,3 ...
2.当再一次和
将会被重置为 0 const
搭配使用的时候,iota
3.iota
所定义的值类型为 int
,它会在每次赋值给一个常量后自增
以一个语言类型的枚举为例
type LanguageType int32 const ( Zh LanguageType = iota En LanguageType Ar LanguageType De LanguageType It LanguageType Ja LanguageType )
func main() { fmt.Println(Zh, En, Ar, De, It, Ja) } #return: 0 1 2 3 4 5
实际在业务中需要展示的是字符串类型,并不是1,2,3,4,5,6
。
使用LanguageType
作为函数接受者自定义一个String()
函数,在函数里面实现转字符串。
# 方法一
func (l LanguageType) String () string {
switch l {
case 0:
return "中文"
case 1:
return "英文"
case 2:
return "阿拉伯文"
case 3:
return "德文"
case 4:
return "意大利文"
case 5:
return "日文"
default:
return ""
}
}
# 方法二
var LanguageMap = map[int32]string{
0: "中文",
1: "英文",
2: "阿拉伯文",
3: "德文",
4: "意大利文",
5: "日文",
}
func (l LanguageType) String () string {
return LanguageMap[int32(l)]
}
运行结果
func main() {
fmt.Println(Zh.String(), En.String(), Ar.String(), De.String(), It.String(), Ja.String())
}
#return: 中文 英文 阿拉伯文 德文 意大利文 日文
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具