大家好呀
欢迎来到这个学习 Rust 的 30 天系列的第五天,今天我们将深入了解 Rust 中的控制流。
控制流,顾名思义,根据条件来 控制程序的流程。
If 表达式
当你想要在满足条件时执行一段代码块时,可以使用 if
表达式。
示例
fn main(){ let age: u32 = 17; if age > 18{ println!("你已经成年了"); }
}
这个程序会检查年龄是否大于 18。如果是,它会输出“你已经成年了”。
那如果条件不满足时要输出什么呢?
Else 表达式
当某个条件不满足时,可以使用 else
表达式来执行一段代码块。
fn main(){ let age: u32 = 17 if age>18{ println!("你已经成年了"); }else{ println!("你还不是成年人"); }
}
这个程序会检查年龄是否大于 18。如果是,它会输出“你已经成年了”,否则会输出“你还不是成年人”。
Else If 表达式
else if
表达式可以用来检查多个条件。例如:
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
关键字停止。
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
循环会在指定条件为真时重复执行一段代码块。
示例:
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
循环会遍历范围、集合或迭代器,对每个迭代执行一段代码块。
示例:
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 中的所有权和内存管理。欢迎大家持续关注,一起学习哦。