上一篇文章《Go语言开发基础系列(五)如何定义枚举》我们介绍了使用go语言定义枚举,这篇文章我们介绍下定义没觉的进阶用法,首先我们回顾一下,上一篇定义枚举后,最后输出的性别是1,2,3。在实际的使用中其实我们更希望让他显示男,女,未知这种符合实际业务场景的显示,那这种怎么实现呢?
首先我们先看看java语言是如何实现的,代码示例如下:
package com.demo.enu; public enum Sex { man(1,"男"), woman(2,"女"), unknow(3,"未知"); Sex(int sexCode,String sexName) { this.sexCode = sexCode; this.sexName = sexName; } int sexCode; String sexName; public int getSexCode() { return sexCode; } public String getSexName() { return sexName; } }
上面的java语言我们就实现了性别的枚举,可以输出code,也可以输出name,很方便在实际的使用场景里面,那么在go语言里面,我们如何实现这上面的效果呢?
这里的话就要使用到const常量组+方法了,我们来看看go语言的实现代码案例:
// Demo project main.go package main import ( "fmt" ) type Sex int const ( man Sex = iota + 1 woman unknow ) func (this Sex) String() string { switch this { case 1: return "男" case 2: return "女" default: return "未知" } } func main() { fmt.Println(man) fmt.Println(woman) fmt.Println(unknow) }
这里我们就有一些变化了,变化如下:
1、这里我们使用type定义了一个自定义的变量Sex, 类型为int。 2、在常量组里面我们把所有的类型都定义为Sex变量 3、然后我们这里编写了一个function,通过code来判断返回的内容,这样子返回的就是男,女,未知
最后我们来看看go语言实现的结果:
这样子就实现了显示男,女,未知这种业务化的现实。这也就是定义枚举的进阶用法。
备注:
1、如果使用枚举进阶的话,这里需要搭配方法来使用。
2、如果使用枚举进阶的话,这里需要使用type标记下自定义的变量。
3、如果使用枚举进阶的话,这里需要把枚举的常量类型定义为type的自定义变量。
还没有评论,来说两句吧...