学习 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 中的所有权和内存管理。欢迎大家持续关注,一起学习哦。

相关推荐
范特西林16 小时前
一次 to_bits() 引发的 Rust 与 C++ 底层思考
rust
冬奇Lab2 天前
一天一个开源项目(第42篇):OpenFang - 用 Rust 构建的 Agent 操作系统,16 层安全与 7 个自主 Hands
人工智能·rust·开源
量子位2 天前
Transformer论文作者重造龙虾,Rust搓出钢铁版,告别OpenClaw裸奔漏洞
rust·openai·ai编程
哈里谢顿2 天前
Rust 语言入门博客
rust
DongLi014 天前
rustlings 学习笔记 -- exercises/06_move_semantics
rust
ssshooter4 天前
Tauri 踩坑 appLink 修改后闪退
前端·ios·rust
布列瑟农的星空4 天前
前端都能看懂的rust入门教程(二)——函数和闭包
前端·后端·rust
蚂蚁背大象5 天前
Rust 所有权系统是为了解决什么问题
后端·rust
布列瑟农的星空5 天前
前端都能看懂的rust入门教程(五)—— 所有权
rust
Java水解6 天前
Rust嵌入式开发实战——从ARM裸机编程到RTOS应用
后端·rust