学习 Rust 的第五天:了解程序的基本控制流程

大家好呀

欢迎来到这个学习 Rust 的 30 天系列的第五天,今天我们将深入了解 Rust 中的控制流。

控制流,顾名思义,根据条件来 控制程序的流程

If 表达式

当你想要在满足条件时执行一段代码块时,可以使用 if 表达式。

示例

rust 复制代码
fn main(){  
  let age: u32 = 17;  
  if age > 18{  
    println!("你已经成年了");  
  }  
}

这个程序会检查年龄是否大于 18。如果是,它会输出"你已经成年了"。

那如果条件不满足时要输出什么呢?

Else 表达式

当某个条件不满足时,可以使用 else 表达式来执行一段代码块。

rust 复制代码
fn main(){  
  let age: u32 = 17  
  if age>18{  
    println!("你已经成年了");  
  }else{  
    println!("你还不是成年人");  
  }  
}

这个程序会检查年龄是否大于 18。如果是,它会输出"你已经成年了",否则会输出"你还不是成年人"。

Else If 表达式

else if 表达式可以用来检查多个条件。例如:

rust 复制代码
fn main(){  
  let number = 92;  
  if number % 9 == 0{  
    println!("数字可以被 9 整除");  
  } else if number % 5 == 0{  
    println!("数字可以被 5 整除");  
  }else if number % 3 == 0{  
    println!("数字可以被 3 整除");  
  }else{  
    println!("数字不能被 9、5、3 整除");  
  }  
}

循环

循环用于重复执行一段代码,直到明确指定停止,或满足某个条件。

loop 关键字

loop 关键字告诉 Rust 运行一段代码块,直到使用 break 关键字停止。

rust 复制代码
fn main() {  
    let mut i: u32 = 0;  
    let mut j: i32 = 10;

    // 带有 break 语句的有标签的无限循环  
    'counting_down: loop {  
        if j >= 0 {  
            println!("{}", j);  
            j -= 1;  
        } else {  
            println!("倒计时循环完成");  
            break 'counting_down;  
        }  
    }  
}

解释:

  • main 函数是 Rust 程序的入口点。
  • j 是类型为 i32(有符号 32 位整数)的变量,初始化为 10。
  • 代码进入一个带有标签的无限循环,标记为 'counting_down
  • 循环内部有一个条件语句,检查 j 是否大于或等于 0。
  • 如果为真,则使用 println! 打印 j 的当前值,并将 j 减 1。
  • 如果为假(当 j 小于 0 时),则打印一条消息并跳出标记为 'counting_down 的循环。
  • 循环会一直进行,直到执行 break 'counting_down; 语句。
  • 标签 'counting_down 用于指定要跳出的循环,特别是在处理嵌套循环时。

While 循环

while 循环会在指定条件为真时重复执行一段代码块。

示例:
rust 复制代码
fn main(){  
  let mut num: u8 = 4;  
  while num!=0 {  
    println!("{}",num);  
    num-=1;  
  }  
}

解释:

  • 声明一个可变变量 num,并将其初始化为值 4。它的类型是 u8(无符号 8 位整数)。
  • 代码进入一个 while 循环,条件为 num != 0
  • 循环内部使用 println! 打印 num 的当前值。
  • 然后使用 num -= 1; 语句将 num 的值减 1。
  • 循环会在条件 num != 0 为真时继续。
  • 程序会按照从初始值(4)开始的递减顺序打印 num 的值,直到变为 0。
  • 一旦 num 变为 0,循环结束,程序继续执行循环外的任何后续代码。

For 循环

for 循环会遍历范围、集合或迭代器,对每个迭代执行一段代码块。

示例:
rust 复制代码
fn main(){  
  // 数组的 for 循环  
  let array: [u8; 10] = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];  
  println!("使用 for 循环访问数组");  
    for item in array {  
        println!("{}", item);  
    }

  // 范围内的 for 循环  
  println!("范围内的 for 循环 ");  
    for number in 0..=5 {  
        println!("{number}");  
    }  println!("范围内的 for 循环(反向)");  
    for number in (0..=5).rev() {  
        println!("{number}");  
    }  
}

总结

控制流是任何编程语言中非常重要的一部分。这也是我把一整天都用来学习这个的原因。明天我会继续探讨 Rust 中的所有权和内存管理。欢迎大家持续关注,一起学习哦。

相关推荐
今天AI了吗1 分钟前
Agent & AI 名词大扫盲
数据库·人工智能·python·sql·rust
萧瑟余晖2 分钟前
Java深入解析篇三十四之分布式事务
java·开发语言·分布式
CAE虚拟与现实3 分钟前
源码注解 /class 注解 / 运行时注解三者生命周期
java·开发语言
有脚就行5 分钟前
第24篇-Go-gRPC推理服务-高性能跨语言通信
开发语言·人工智能·后端·golang
码匠许师傅6 分钟前
【C++ 面试真题】聊聊 C++ 的关联容器
开发语言·c++·面试
丰锋ff12 分钟前
7.2Qt中Json的操作
开发语言·qt·json
我不是疯子是傻子21 分钟前
用DeepSeek生成Qt多协议解析器?「正则+状态机+AI分支裁剪」混合调优实战
开发语言·qt
新鲜势力呀22 分钟前
深入理解 Elliot CUDA 编程核心:PHP 实现 CUDA 并行计算思想与实践
android·开发语言·php
打工陈39 分钟前
电路理论知识学习--(4)RC、LC、LR低通滤波对比
学习·智能硬件
ZJU_统一阿萨姆1 小时前
【推理优化进阶】性能实验科学:工作负载、统计显著性与尾延迟归因
开发语言·人工智能·语言模型·系统架构·vllm