在 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 程序。