go枚举的实现

golang中枚举的实现是通过const和iota关键字来实现的

1.枚举的作用

是一种重要的数据类型,由一组键值对组成,通常用来在编程语言中充当常量的标识符。使用枚举代替整数传入参数时,可以将参数的范围缩小到枚举集合内,防止了不可用的参数的传入。枚举自带说明性,使得代码更加易读。

枚举常用于星期、类型、等级、状态等。

iota是一个常量计数器,和const搭配使用可以实现枚举的效果

1.iota 代表了一个连续的整形常量,0,1,2,3 ...

2.当再一次和 const 搭配使用的时候,iota 将会被重置为 0 

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: 中文 英文 阿拉伯文 德文 意大利文 日文

 

posted @   思伊不见  阅读(377)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示