在 Rust 中,控制流语句用于决定程序执行的顺序,主要包括条件语句、循环语句等。
条件语句
if 语句
if 语句用于根据条件来决定是否执行某段代码。基本语法如下:
fn main() {
let number = 3;
if number < 5 {
println!("The number is less than 5.");
}
}
在上述代码中,如果 number 小于 5,则会执行 if 块内的代码。
if 语句还可以结合 else 使用,当条件不满足时执行 else 块内的代码:
fn main() {
let number = 7;
if number < 5 {
println!("The number is less than 5.");
} else {
println!("The number is greater than or equal to 5.");
}
}
你可以使用多个 else if 来处理多个条件:
fn main() {
let number = 10;
if number < 5 {
println!("The number is less than 5.");
} else if number < 10 {
println!("The number is less than 10 but greater than or equal to 5.");
} else {
println!("The number is greater than or equal to 10.");
}
}
在 Rust 中,if 是一个表达式,这意味着它可以有返回值。示例如下:
fn main() {
let condition = true;
let number = if condition { 5 } else { 6 };
println!("The value of number is {}.", number);
}
这里 if 表达式根据 condition 的值返回不同的整数,然后将其赋值给 number。
match 语句
match 语句用于对一个值进行模式匹配,根据不同的匹配结果执行不同的代码块。它类似于其他语言中的 switch 语句,但功能更强大。示例如下:
fn main() {
let number = 1;
match number {
1 => println!("The number is 1."),
2 => println!("The number is 2."),
_ => println!("The number is not 1 or 2."),
}
}
在上述代码中,match 对 number 进行匹配,当 number 为 1 时,执行对应的代码块;当为 2 时,执行相应代码块;_ 是通配符,当其他模式都不匹配时,执行 _ 对应的代码块。 ### 循环语句 #### loop 循环 loop 语句会无限循环执行代码块,直到遇到 break 语句。
示例如下:
fn main() {
let mut counter = 0;
loop {
counter += 1;
if counter == 5 {
break;
}
println!("The counter is {}.", counter);
}
}
在这个例子中,loop 不断递增 counter 的值,当 counter 等于 5 时,使用 break 语句跳出循环。
break 语句还可以返回一个值,示例如下:
fn main() {
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 5 {
break counter * 2;
}
};
println!("The result is {}.", result);
}
while 循环
while 循环在条件为 true 时执行代码块,每次循环开始前都会检查条件。示例如下:
fn main() {
let mut number = 3;
while number > 0 {
println!("{}!", number); number -= 1;
}
println!("LIFTOFF!");
}
在这个例子中,只要 number 大于 0,就会执行 while 块内的代码,每次循环将 number 减 1,直到 number 不大于 0 时退出循环。
for 循环
for 循环通常用于遍历集合类型(如数组、向量等)。示例如下:
fn main() {
let a = [10, 20, 30, 40, 50];
for element in a.iter() {
println!("The value is {}.", element);
}
}
在上述代码中,for 循环遍历数组 a 中的每个元素,并打印出来。 for 循环还可以结合 Range 类型来进行计数循环,示例如下:
fn main() {
for number in (1..4).rev() {
println!("{}!", number);
}
println!("LIFTOFF!");
}
这里使用 (1..4).rev() 创建一个从 3 到 1 的逆序范围,然后 for 循环遍历这个范围。
通过这些控制流语句,可以编写出逻辑复杂且灵活的 Rust 程序。