22.Enum(枚举)
枚举 enum 关键字允许创建一个从数个不同取值中选其一的枚举类型(enumeration)。任何一个在 struct 中合法的取值在 enum 中也合法。
在日常生活中很常见。比如:1 年有 12 个月,1 周有 7 天。
枚举的定义
1 2 3 4 5
| enum 枚举名称{ variant1, variant2, ... }
|
使用枚举
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 枚举名称::variant
#[derive(Debug)] enum RoadMap { Go语言极简一本通, Go语言微服务架构核心22讲, 从0到Go语言微服务架构师, }
//这是Go语言学习3个阶段
fn main() { let level = RoadMap::从0到Go语言微服务架构师; println!("level---{:?}",level); }
|
#[derive(Debug)]
注解的作用,就是让 派生自
Debug`。
Option 枚举
1 2 3 4
| enum Option<T> { Some(T), // 用于返回一个值 None // 用于返回 null,用None来代替。 }
|
Option
枚举经常用在函数中的返回值
,它可以表示有返回值,也可以用于表示没有返回值。如果有返回值。可以使用返回 Some(data),如果函数没有返回值,可以返回 None。
1 2 3 4 5 6 7 8 9 10 11 12
| fn getDiscount(price: i32) -> Option<bool> { if price > 100 { Some(true) } else { None } }
let p=666; //输出 Some(true) // let p=6;//输出 None let result = getDiscount(p); println!("{:?}",result)
|
match 语句
判断一个枚举变量的值,唯一操作符就是 match。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| fn print_road_map(r:RoadMap){ match r { RoadMap::Go语言极简一本通=>{ println!("Go语言极简一本通"); }, RoadMap::Go语言微服务架构核心22讲=>{ println!("Go语言微服务架构核心22讲"); }, RoadMap::从0到Go语言微服务架构师=>{ println!("从0到Go语言微服务架构师"); } } } print_road_map(RoadMap::Go语言极简一本通);//输出 Go语言极简一本通 print_road_map(RoadMap::Go语言微服务架构核心22讲);//输出 Go语言微服务架构核心22讲 print_road_map(RoadMap::从0到Go语言微服务架构师);//输出 从0到Go语言微服务架构师
|
带数据类型的枚举
1 2 3 4 5
| enum 枚举名称{ variant1(数据类型1), variant2(数据类型2), ... }
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| #[derive(Debug)] enum StudyRoadMap{ Name(String), }
let level3 = StudyRoadMap::Name(String::from("从0到Go语言微服务架构师")); match level3 { StudyRoadMap::Name(val)=>{ println!("{:?}",val); } }
//输出 "从0到Go语言微服务架构师"
|
添加微信 |
公众号更多内容 |
 |
 |