Golang日常枚举使用

这篇博客探讨了在Go语言中如何实现枚举类型的两种方法,通过const定义和自定义类型配合String()方法。文章详细展示了Java与Go语言中枚举的不同,并提供了实际业务场景下将枚举转换为字符串的示例代码。
摘要由CSDN通过智能技术生成

在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。

在日常开发中枚举比较常用,比如:星期、类型、等级、状态等。

Java语言里在 JDK 1.5 中提供枚举这个新特性, enum 关键字修饰的类型定义为枚举类型。

enum Color { RED, GREEN, BLUE }

go语言并没有enum的定义,但是可以用const实现枚举类型。

# 语言类型枚举
const (
	_ = iota
	Zh
	En
	Ar
	De
	It
	Ja
)

func main() {
	fmt.Println(Zh, En, Ar, De, It, Ja)
}

#return: 1 2 3 4 5 6

实际在业务中需要展示的是字符串类型,并不是1,2,3,4,5,6

先要自定义一个类型LanguageType作为枚举的变量类型。

type LanguageType int32

const (
	Zh		LanguageType = 1
	En		LanguageType = 2
	Ar		LanguageType = 3
	De		LanguageType = 4
	It		LanguageType = 5
	Ja		LanguageType = 6
)

再使用LanguageType作为函数接受者自定义一个String()函数,在函数里面实现转字符串。

# 方法一
func (l LanguageType) String () string {
	switch l {
	case 1:
		return "中文"
	case 2:
		return "英文"
	case 3:
		return "阿拉伯文"
	case 4:
		return "德文"
	case 5:
		return "意大利文"
	case 6:
		return "日文"
	default:
		return ""
	}
}

# 方法二
var LanguageMap = map[int32]string{
	1: "中文",
	2: "英文",
	3: "阿拉伯文",
	4: "德文",
	5: "意大利文",
	6: "日文",
}

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

代码地址:https://github.com/Liangxiaowu/go-study/tree/main/enumdemo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值