14.Rust-循环

2022-09-04 11:37:33 浏览数 (2)

现实中的循环很多,比如我们在学校操场里跑步,一圈一圈的跑。在计算机中,循环 其实就是一种重复,在满足指定的条件下,重复的做某些事情。

Rust 语言中也有三种表示 循环 的语句:

  • loop 语句。一种重复执行且永远不会结束的循环。
  • while 语句。一种在某些条件为真的情况下就会永远执行下去的循环。
  • for 语句。一种有确定次数的循环。

for 循环

代码语言:txt复制
for 临时变量 in 左区间..右区间 {
   // 执行业务逻辑
}

左区间..右区间,这是一个左闭右开的区间,1..5,那就只包含 1,2,3,4

代码语言:txt复制
for num in 1..5{
   println!("num is {}", num);
}
//输出
num is 1
num is 2
num is 3
num is 4

可以使用 a..=b 表示两端都包含在内的范围。

代码语言:txt复制
for num in 1..=5 {
   println!("num is {}", num);
}
输出
num is 1
num is 2
num is 3
num is 4
num is 5

for 与迭代器

iter - 在每次迭代中借用集合中的一个元素。这样集合本身不会被改变,循环之后仍可以使用。

代码语言:txt复制
 let studyList = vec![
        "《Go语言极简一本通》",
        "Go语言微服务架构核心22讲",
        "从0到Go语言微服务架构师",
    ];
    for name in studyList.iter() {
        match name {
            &"从0到Go语言微服务架构师" => println!("恭喜你进阶到第三阶段-{}!", name),
            _ => println!("学习: {}", name),
        }
    }
//输出
学习: 《Go语言极简一本通》
学习: Go语言微服务架构核心22讲
恭喜你进阶到第三阶段-从0到Go语言微服务架构师!

into_iter - 会消耗集合。在每次迭代中,集合中的数据本身会被提供。一旦集合被消耗了,之后就无法再使用了,因为它已经在循环中被 “移除”(move)了。

代码语言:txt复制
 let studyList2 = vec![
        "《Go语言极简一本通》",
        "Go语言微服务架构核心22讲",
        "从0到Go语言微服务架构师",
    ];
    for name in studyList2.into_iter() {
        match name {
            "从0到Go语言微服务架构师" => println!("恭喜你进阶到第三阶段-{}!", name),
            _ => println!("学习: {}", name),
        }
    }
输出
学习: 《Go语言极简一本通》
学习: Go语言微服务架构核心22讲
恭喜你进阶到第三阶段-从0到Go语言微服务架构师!

iter_mut - 可变地(mutably)借用集合中的每个元素,从而允许集合被就地修改。

就是停止本次执行剩下的语句,直接进入下一个循环。

代码语言:txt复制
let mut studyList3 = vec![
        "《Go语言极简一本通》",
        "Go语言微服务架构核心22讲",
        "从0到Go语言微服务架构师",
    ];
    for name in studyList3.iter_mut() {
        *name = match name {
            &mut "从0到Go语言微服务架构师" => {
                "恭喜你进阶到第三阶段---从0到Go语言微服务架构师"
            }
            _ => *name,
        }
    }
    println!("studyList3: {:?}", studyList3);
    输出
    studyList3: ["《Go语言极简一本通》", "Go语言微服务架构核心22讲", "恭喜你进阶到第三阶段---从0到Go语言微服务架构师"]

while 循环

代码语言:txt复制
while ( 条件表达式 ) {
    // 执行业务逻辑
}

上面的条件表达式为真,就会执行 while 循环。

代码语言:txt复制
 let mut num = 1;
 while num < 20{
    println!("num is {}",num);
    num= num*2;
}
//输出
num is 1
num is 2
num is 4
num is 8
num is 16

loop 循环 break

代码语言:txt复制
loop {
    // 执行业务逻辑
}
break; 中断的意思,就是跳出loop循环

let mut num = 1;
loop {
   if num > 20{
      break;
   }
   println!("num is {}",num);
   num= num*3;
}
//输出
num is 1
num is 3
num is 9

0 人点赞