Fork me on GitHub

rust学习(六)控制流

学习完了函数,接下来学习控制流。rust的控制流包括if、else-if、else。循环语句包括loop、while、for等

老样子,我们利用caogo新建一个项目

  • cargo new branches
  • cd 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中获得返回值我们可以通过breakcontinue关键字来帮助我们完成此需求。
不同的是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

posted @ 2025-11-05 17:32  Hui_Li  阅读(10)  评论(0)    收藏  举报