Create chapter_3_5.md

This commit is contained in:
令狐一冲
2023-05-17 14:12:07 +08:00
committed by GitHub
parent c01d1aae15
commit 898159536d

View File

@@ -0,0 +1,170 @@
## 3.5 控制流(Control Flow)
Rust中的控制流结构主要包括
- if条件判断
- loop循环
- while循环
- for .. in 循环。
### 3.5.1. if条件判断
- if执行条件判断示例如下
```Rust
fn main() {
let a = 2u32;
if a > 5u32 {
println!("a > 5");
} else {
println!("a <= 5");
}
}
```
- if - else if处理多重条件示例如下
```Rust
fn main() {
let a = 3u32;
if a > 5u32 {
println!("a > 5");
} else if a > 4u32 {
println!("a > 4");
} else if a > 3u32 {
println!("a > 3");
} else if a > 2u32 {
println!("a > 2");
} else if a > 1u32 {
println!("a > 1");
} else {
println!("a = 1");
}
}
```
- 在let语句中使用if
if是一个表达式所以可以在let右侧使用如下
```Rust
fn main() {
let a = 3u32;
let a_bigger_than_two: bool = if a > 2u32 {
true
} else {
false
};
if a_bigger_than_two {
println!("a > 2");
} else {
println!("a <= 2");
}
}
```
### 3.5.2. loop循环
- loop重复执行代码
```Rust
fn main() {
// 一直循环打印 again
loop {
println!("again!");
}
}
```
- 使用break终止循环
```Rust
fn main() {
let mut counter = 0;
loop {
println!("counter = {:?}", counter);
counter += 1;
if counter == 10 {
break; // 将终止循环
}
}
}
```
上面的代码将打印10次遇到break后终止循环。另外break也可以返回值如下
```Rust
fn main() {
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
println!("The result is {result}");
}
```
- 使用continue可以直接跳到下一轮循环
```Rust
fn main() {
let mut x = 0;
// 此循环将只打印10以内的奇数
loop {
x += 1;
if x == 10 {
break;
}
if x % 2 == 0 {
continue; //将直接跳到下一轮循环
}
println!("{}", x);
}
}
```
### 3.5.3. while条件循环
- while条件循环执行代码当条件不满足后结束循环如下
```Rust
fn main() {
let mut cnt = 0u32;
while cnt < 10 {
println!("cnt = {:?}", cnt);
cnt += 1;
}
}
```
- 在while循环中也可以使用break和continue如下
```Rust
fn main() {
let mut x = 0;
while x < 10 {
x += 1;
println!("{}", x);
if x % 2 == 0 {
continue; // 跳到下一轮循环
}
if x > 8 {
break; // 提前结束
}
}
}
```
### 3.5.4. for .. in 循环
for循环用来对一个集合的每个元素执行一些代码使用方式如下
```Rust
fn main() {
let a = [10, 20, 30, 40, 50];
for item in a {
println!("the value is: {:?}", item);
}
}
```