跟着谷歌学习Rust:第三课-流程控制

82 阅读2分钟

条件语句

条件语句基本都是if-else组成。但是Rust的条件语句和Java还是有一点区别。

Java中的if语句会将表达式写在括号中,但是Rust不需要,Rust默认if后跟的就是表达式(但是也有例外,比如if let,这个后面会说)。

fn main() {
    let x = 10;
    if x < 20 {
        println!("small");
    } else if x < 100 {
        println!("biggish");
    } else {
        println!("huge");
    }
}
fn main() {
    let x = 10;
    let size = if x < 20 { "small" } else { "large" };
    println!("number size: {}", size);
}

循环语句

要说循环语句for循环一定首当其冲,毕竟日常开发使用最多的就是for(解决不了的就for一次,还不行就for两次)

  • for
fn main() {
    for x in 1..5 {
        println!("x: {x}");
    }
}

Rust的for循环和Java很不一样,但是和Python基本相同都是使用for item in items 的方式。

  • while
fn main() {
    let mut x = 200;
    while x >= 10 {
        x = x / 2;
    }
    println!("Final x: {x}");
}

while循环的结束表达式跟在while后面。满足表达式的才进入while体。

  • loop
fn main() {
    let mut i = 0;
    loop {
        i += 1;
        println!("{i}");
        if i > 100 {
            break;
        }
    }
}

loop循环是Rust中的一个循环关键字,使用loop一定要注意死循环问题,因为loop就是一个死循环的代码块。

以上代码中可以看到loop关键字没有定义任何中断表达式,中断表达式是在loop代码块中定义的,只有执行break才会跳出loop。所以使用loop一定要注意。

中断/继续语句

fn main() {
    let (mut a, mut b) = (100, 52);
    let result = loop {
        if a == b {
            break a;
        }
        if a < b {
            b -= a;
        } else {
            a -= b;
        }
    };
    println!("{result}");

		for i in 1..5 {
			 if i < 2 {
					continue;
			 }
			 println!("current index :{i}");
		}
}

break:中断的关键字,中断用于循环体的中断,可以中断循环体的执行,直接跳出循环体

continue:继续的关键字,循环体如果执行继续关键字,则直接跳过当前执行进行下一次循环。不会跳出循环

参考

google.github.io/comprehensi…