控制流是编程语言的一个重要概念。程序员通过控制流可以控制哪些代码要执行。在Rust中,最常见的两种控制流结构是if表达式和循环。
二、if 表达式 1、语法格式这里的 condition 必须是 bool 类型
if condition {// code to execute if the condition is true} else {// code to execute if the condition is false} 2、多个 if condition1 {// code to execute if condition1 is true} else if condition2 {// code to execute if condition1 is false and condition2 is true} else {// code to execute if both conditions are false} 3、获取表达式的值正如这一小节的标题所说,if其实是一个表达式,具有返回值。
需要注意的是,if分支和else分支的返回值必须是同一类型。
fn main() {let temperature = 20;let weather = if temperature >= 25 {"hot"} else {"cool"};println!("The weather today is {}.", weather);} 三、循环Rust中提供了三种循环方式,loop,while,for。
1、loop:无限循环,可跳出 无限循环loop关键字会创建一个无限循环
loop {// code to execute repeatedly} 跳出循环想要从循环中跳出,需要配合break关键词使用,下面的代码也展示了 continue 的用法!
let mut counter = 0;loop {counter += 1;if counter < 5 {continue;}println!("Hello, world!");if counter >= 5 {break;}} 返回值 fn main() {let target = 10;let mut sum = 0;let mut counter = 1;let result = loop {sum += counter;if sum >= target {break counter; // The value of counter will be returned from the loop as a result}counter += 1;};println!("The first number whose sum of all previous numbers is greater than or equal to {} is {}.", target, result);} 2、while:条件循环,可跳出 while condition {// code to execute while the condition is true} 3、for:常用于访问集合 访问集合:while 示例 fn main() {let numbers = [1, 2, 3, 4, 5];let mut index = 0;while index < numbers.len() {println!("The value is: {}", numbers[index]);index += 1;}} 访问集合:for 示例 fn main() {let numbers = [1, 2, 3, 4, 5];for number in numbers {println!("The value is: {}", number);}} 对一个 range 进行循环这里的1..=3表示[1,3]这个区间的整数。如果是左闭右开,要写成1..3。
fn main() {for x in 1..=3 {println!("x: {}", x);}} 4、labels:给循环加标签三种循环都支持!
当循环存在嵌套关系时,break和continue只会对最内层的循环生效。但是有时候我们希望可以对外层的循环做break或者continue,这时该怎么办?幸运的是,Rust 可以给循环加上标签,从而break和continue都可以直接操作标签。
fn main() {let x = 1;'outer: loop {let mut y = 1;'inner: loop {if y == 3 {y += 1;continue 'inner; // Skips to the next iteration of the 'inner loop}println!("x: {}, y: {}", x, y);y += 1;if y > 5 {break 'outer; // Breaks out of the 'inner loop}}}}带返回值
fn main() {let x = 1;let z = 'outer: loop {let mut y = 1;'inner: loop {if y == 3 {y += 1;continue 'inner; // Skips to the next iteration of the 'inner loop}println!("x: {}, y: {}", x, y);y += 1;if y > 5 {break 'outer y; // Breaks out of the 'inner loop}}};println!("z: {}", z);}