rust学习(六)控制流
学习完了函数,接下来学习控制流。rust的控制流包括if、else-if、else。循环语句包括loop、while、for等
老样子,我们利用caogo新建一个项目
cargo new branchescd branches
if
如果我们学习过其他编程语言,if的判断条件可以是bool类型,也可以是一个逻辑表达式。但在rust中if后面只能跟bool值,rust不会将非布尔值转换为布尔值。
fn main(){
// if表达式
let x: u8 = 15;
if x < 18 {
println!("The legal of age is 18!");
}
}
else-if else
如果我们对某一个值有有限个判断条件,我们可以通过else-if判断其他条件,并通过给出一个else来对当前面其他判断条件都不满足时,给出其他处理逻辑。
fn main(){
// if else-if else
let number = 6;
if number % 4 == 0 {
println!("number is divisible by 4");
} else if number % 3 == 0 {
println!("number is divisible by 3");
} else if number % 2 == 0 {
println!("number is divisible by 2");
} else {
println!("number is not divisible by 4, 3, or 2");
}
}
我们还可以将if与let结合使用,因为if是一个表达式,所以我们可以在let的右边使用它。
此外if的每个分支的可能返回值都必须是相同类型,这是rust规定的~~~
fn main(){
// let与if搭配使用
// if 的每个分支的可能的返回值都必须是相同类型
let condition = true;
let num = if condition { 5 } else { 6 };
println!("The value of num is: {}", num);
}
循环
如果我们想要某一段代码根据我们的约定执行多少次,我们就需要依靠循环这个工具来实现。
在其他编程语言当中,如果我们想要编写一个死循环,通常使用while(1) while(true)等等形式。在rust当中如果可以借助loop关键字来实现。
// 这段代码会一直执行,直到我们手动终止
loop{
}
和其他语言类似,如果我们想要从loop中获得返回值我们可以通过break和continue关键字来帮助我们完成此需求。
不同的是break会跳出当前循环;而continue会跳过当前循环,执行下一次循环(嵌套循环时会用到)。
示例代码:
// loop循环
let mut count: u8 = 0;
let result: u8 = loop {
count += 1;
if count == 10 {
break count * 2; // 使用break关键字跳出循环
}
};
println!("The result is {}", result); // 20
多层循环嵌套时,我们可能需要通过一个标签名来帮助我们跳出循环。
rust的循环标签名定义形式我觉得很怪异。。。。hh
定义形式:'label_name:loop{} 跳出时通过break 'label_name
// 循环嵌套,通过循环标签消除多个循环间的歧义
let mut cc_count: u8 = 0;
// 指定一个 循环标签
'counting_up: loop {
println!("cc_count = {cc_count}");
let mut remaining: u8 = 10;
loop {
println!("remaining = {remaining}");
if remaining == 9 {
break;
}
if cc_count == 2 {
break 'counting_up; // 通过指定标签名跳出最外层循环
}
remaining -= 1;
}
cc_count += 1;
}
println!("End cc_count = {cc_count}");
while
while循环很方便,我们经常会使用到它。当满足某个条件时,while循环会一直执行下去,直到不满足该条件才会调用break退出循环。有时while循环的代码和使用for循环编写的代码类似,我们常根据实际情况使用某种形式。
语法:while bool {// execute something}
示例代码:
// while循环
// 当条件为true,执行循环;当条件为false,调用break中止循环
let mut dd_count: u8 = 5;
while dd_count != 0{
println!("dd_count = {dd_count}");
dd_count-=1;
}
println!("dd_count is LIFTOFF!!!");
for
for循环是我们最常用的循环形式之一,它在每个编程语言当中都非常常见。
rust中通过for in的方式来实现循环遍历。for循环还包括迭代器,后续学到时再做阐述...
示例代码:
// for in循环
// 通过for循环遍历输出数组元素
let arr_data:[u8;5] = [1, 2, 3, 4, 5];
for item in arr_data{
print!("{} ", item);
}
println!();
// 利用for循环实现倒计时
for range_i in (1..10).rev() {
println!("{range_i}!");
}
println!("LIFTOFF!!!");
这里只是简要说明了loop、while、for的简单使用,如果想要更多例子可以参考rust官方的例子或者上网搜索更多....
官网例子:https://doc.rust-lang.org/rust-by-example/flow_control/for.html

浙公网安备 33010602011771号