Skip to content

第三节、控制语句

条件判断 if

根据条件决定要执行的语句块

    let number = 3;

    if number < 5 { //3是小于5的,所以就会走这条语句
        println!("condition was true");
    } else { //否则 ,也是是>=5,大于等于5的时候,本例子不走这条语句
        println!("condition was false");
    }

非布尔型不能直接判断

    let number = 3;

    if number { //这句会报错,number是 int类型。
        println!("number was three");
    }
⚠️有些语言是支持 int类型做if条件判断的。

if else if

    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 condition = true;
    let number = if condition { 5 } else { 6 };

    println!("The value of number is: {}", number);
⚠️注意这个返回的 5,6 必须是同一个类型

fn main() {
    let condition = true;

    let number = if condition { 5 } else { "six" };

    println!("The value of number is: {}", number);
}

循环语句

loop,while,for

fn main() {
    loop {
        println!("again!");
    }
}
这个程序会一直打印:
again!
again!
again!
again!
.......

如何终止循环?

        let mut remaining = 10;
        loop {
            println!("remaining = {}", remaining);
            if remaining == 9 {
                break;
            }
            remaining -= 1;
        }
结果
remaining = 10
remaining = 9

双层循环,通过标签做终止

    let mut count = 0;
    'counting_up: loop { //大循环
        println!("count = {}", count);
        let mut remaining = 10;

        loop { //小循环
            println!("remaining = {}", remaining);
            if remaining == 9 {
                break; //默认终止最近的循环,也就是小循环
            }
            if count == 2 {
                break 'counting_up; //终止 大循环。
            }
            remaining -= 1;
        }

        count += 1;
    }
    println!("End count = {}", count);

上面例子有2个循环,为了方便我标注了大循环和小循环。

小循环的终止直接是break,大循环的终止需要一个标识,这样程序就知道break的是那个循环。

循环的返回值

    let mut counter = 0;

    let result = loop {
        counter += 1;

        if counter == 10 {
            break counter * 2;
        }
    };

    println!("The result is {}", result);
循环结束后result 为20。

while 循环

fn main() {
    let mut number = 3;

    while number != 0 {
        println!("{}!", number);

        number -= 1;
    }

    println!("LIFTOFF!!!");
}

for 循环

    let a = [10, 20, 30, 40, 50];

    for element in a {
        println!("the value is: {}", element);
    }
    //反转
    for number in (1..4).rev() {
        println!("{}!", number);
    }
    println!("LIFTOFF!!!");
结果
the value is: 10
the value is: 20
the value is: 30
the value is: 40
the value is: 50
3!
2!
1!
LIFTOFF!!!