学习完了函数,接下来学习控制流。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 elselet 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