Go名目怎样经常使用枚举 伙计 (go的名称)
本文目录导航:
伙计,Go名目怎样经常使用枚举?
哈喽,大家好,我是asong。
枚举是一种很关键的数据类型,在java、C言语等干流编程言语中都允许了枚举类型,然而在Go言语中却没有枚举类型,那有什么代替打算吗?本文咱们来聊一聊这个事件;为什么要有枚举?咱们以java言语为例子,在JDK1.5之前没有枚举类型,咱们理论会经常使用int常量来示意枚举,普通经常使用如下:经常使用int类型会存在以下隐患:于是乎咱们就想到用常量字符来示意,代码就变成了这样:这样也雷同存在疑问,由于咱们经常使用的常量字符,那么有些程序猿不按套路出牌就可以经常使用字符串的值启动比拟,这样的代码会被始终模拟变得越来越多的,而后屎山就出现了;所以咱们迫切须要枚举类型的出现来起到解放的作用,假定经常使用一个枚举类型做入参,枚举类型就可以限定沙雕用户不按套路传参,这样就可以怼他了,哈哈~;经常使用枚举的代码就可以变成这样,传了枚举之外的类型都无法以了;Go言语就没有枚举类型,咱们该经常使用什么方法来代替呢?定义新类型成功枚举:枚举理论是一组关系的常量汇合,Go言语中有提供常量类型,所以咱们可以经常使用常量来申明枚举,但也雷同会遇到上述的疑问,起不到解放的作用,所认为了起到解放咱们可以经常使用Go言语另外一个常识点 -- 类型定义,Go言语中可以经常使用type关键字定义不同的类型,咱们可认为整型、浮点型、字符型等定义新的类型,新的类型与原类型转换须要显式转换,这样在必定水平上也起到了解放的作用,咱们就可以用Go言语成功如下枚举:下面的代码就会报错:定义新的类型可以起到解放作用,比如咱们要审核形态机,入参限定了必定是OrderStatus类型,假设是int类型就会报错。
下面咱们的枚举成功方式只能失掉枚举值,失掉不到其映射的字面意思,所以咱们可以优化一下,成功String方法,经常使用官网提供的cmd/string来极速成功,代码如下:口头命令go generate ./...生成orderstatus_文件:下面咱们的枚举成功方式就能失掉枚举值及其映射的字面意思。
总结:只管Go言语没有提供枚举类型,然而咱们也可以依据Go言语的两个个性:常量和定义新类型来成功枚举,方法总比艰巨多吗,开源库是低劣的,咱们往往可以从高手那里里学习很多,记住,请永远坚持一个学徒之心;好啦,本文到这里就完结了,我是asong,咱们下期见。
Java干货 | Java申明枚举类型、枚举(enum)类、EnumMap 与 EnumSet
本文详述了Java中的枚举类型、枚举类、EnumMap与EnumSet的经常使用与个性,联合详细名目案例,确保读者能深化了解并灵敏运用这些概念。
首先,咱们引见枚举类型。
经过Java的关键字enum,申明枚举类型时,实例被视为固定的且有限的常量。
例如,申明了一个枚举类型Weekday,蕴含一周七天的枚举值。
值得留意的是,枚举值必定所有大写,表现其常量性质。
接着,论述枚举类。
它是一种不凡的类方式,用于成功枚举类型。
枚举类可以领有属性、方法及结构方法,增强枚举的适用性。
例如,申明了一个枚举类Weekday,蕴含一周七天的枚举值,每个枚举值具备中文和英文称号,经过结构方法初始化属性,提供getter方法。
进一步引见EnumMap。
这是一种不凡的Map,其键必定为枚举类型。
经过创立EnumMap,可以轻松地统计枚举类型的数量或关联数据。
例如,创立一个EnumMap,键为枚举类型Weekday,值为字符串类型,经过put方法减少元素,经常使用get方法失掉元素。
留意,EnumMap中的元素依照枚举值的顺序陈列。
之后,解释EnumSet。
它是不凡的Set,元素必定为枚举类型。
例如,创立一个EnumSet,蕴含一周上班日的枚举值,经常使用方法创立蕴含指定范畴的EnumSet。
雷同,EnumSet中的元素依照枚举值的顺序陈列。
在名目案例中,经常使用枚举类型示意酒店预订系统的房间类型和订单形态。
申明RoomType和OrderStatus枚举类型,区分示意房间类型和订单形态。
每个枚举值具备一称号,经过结构方法初始化称号,并提供getter方法。
在预订系统中,应用EnumMap统计房间类型和订单形态的数量,经常使用EnumSet示意可用的房间类型。
提供bookRoom和updateOrderStatus方法,区分用于预订房间和降级订单形态。
最后,罗列一些留意事项。
在枚举类型中,枚举值必定为常量,因此必定所有大写。
枚举类具备与普通类相似的个性和方法,可裁减枚举的经常使用场景。
EnumMap和EnumSet中的元素顺序遵照枚举值的顺序。
经过正当运用枚举类型、枚举类、EnumMap和EnumSet,可以优化代码的可读性和可保养性。
总结,本文经过详细解说和实例展示,旨在协助读者把握Java中枚举类型、枚举类、EnumMap与EnumSet的经常使用方法和留意事项。
在实践名目中,灵敏运用这些概念,能够有效提高代码品质。
9、Java基础-枚举类
经常使用 enum 关键字定义的枚举类是 Java 中的一种不凡类,关键用于示意一组常量。
经常使用枚举类能够使代码愈加繁复、安保,并且易于保养。
枚举类的作用在于提供一组预约义的常量汇合,可以用于枚举变量的申明,使得变量的取值范畴在编译期就能被确定,从而防止了运转时意外的出现。
枚举类的特点包括:运转结果不会间接展现,但在代码中经常使用枚举类时,可以应用其提供的方法来失掉枚举值。
例如,可以经过枚举类对象的静态方法 T valueOf(); 依据枚举类Class和name值前往对应的枚举类值。
JVM 提供的静态方法,如 T[] values();,用于失掉枚举值汇合,只管 Enum 类并未提供此方法,但每个枚举类都有该方法,用于前往枚举值的数组。
枚举类关系汇合类的经常使用及成功原理如下:EnumMap 相似于 HashMap,但当 key 值为 Enum 类型时,EnumMap 的功能优于 HashMap。
其外部成功是经常使用两个等长数组,区分存储键值对的 key 和 value,确保键类型正确时,将值放入对应数组。
EnumSet 是用于寄存枚举汇合的类。
它是形象类,不能间接实例化。
只能经过 EnumSet 的静态方法来创立枚举类汇合。
外部成功依据枚举类值数量选用不同的成功,当数量大于 64 时创立 JumboEnumSet 对象,否则创立 RegularEnumSet 对象。
创立枚举汇合的静态方法包括但不限于:经常使用 EnumSet 的静态工厂方法来创立 EnumSet 实例。
这些方法提供了高效、安保的枚举汇合治理方式。