前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >22.Rust-枚举

22.Rust-枚举

原创
作者头像
面向加薪学习
修改2022-09-04 11:39:37
2430
修改2022-09-04 11:39:37
举报
文章被收录于专栏:面向加薪学习面向加薪学习

枚举 enum 关键字允许创建一个从数个不同取值中选其一的枚举类型(enumeration)。任何一个在 struct 中合法的取值在 enum 中也合法。

在日常生活中很常见。比如:1 年有 12 个月,1 周有 7 天。

枚举的定义

代码语言:txt
复制
enum 枚举名称{
 variant1,
 variant2,
 ...
}

使用枚举

代码语言:txt
复制
枚举名称::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 枚举

代码语言:txt
复制
enum Option<T> {
   Some(T),      // 用于返回一个值
   None          // 用于返回 null,用None来代替。
}

Option 枚举经常用在函数中的返回值,它可以表示有返回值,也可以用于表示没有返回值。如果有返回值。可以使用返回 Some(data),如果函数没有返回值,可以返回 None。

代码语言:txt
复制
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。

代码语言:txt
复制
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语言微服务架构师

带数据类型的枚举

代码语言:txt
复制
enum 枚举名称{
    variant1(数据类型1),
    variant2(数据类型2),
    ...
}
代码语言:txt
复制
#[derive(Debug)]
enum StudyRoadMap{
    Name(String),
}

let level3 = StudyRoadMap::Name(String::from("从0到Go语言微服务架构师"));
match level3 {
    StudyRoadMap::Name(val)=>{
        println!("{:?}",val);
    }
}

//输出 "从0到Go语言微服务架构师"

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 枚举的定义
  • 使用枚举
  • Option 枚举
  • match 语句
  • 带数据类型的枚举
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档