当前位置: 首页 > news >正文

【rust】| 05——语法基础 | 流程控制

系列文章目录
【rust】| 00——开发环境搭建
【rust】| 01——编译并运行第一个rust程序
【rust】| 02——语法基础 | 变量(不可变?)和常量
【rust】| 03——语法基础 | 数据类型
【rust】| 04——语法基础 | 函数
【rust】| 05——语法基础 | 流程控制

文章目录

  • 流程控制
  • 1. 条件判断
    • 1.1 if
    • 1.2 else if
    • 1.3 注意事项
  • 2. 循环
    • 2.1 loop
    • 2.2 while
    • 2.3 for

流程控制

每个语言中都不可缺失对程序流程的控制。rust中也是如此 和其他语言也是相似的。但是也有细微差别。
差别:rust中 if else if 是表达式
即可以做右值 直接 给变量赋值

1. 条件判断

1.1 if

单个条件判断(即如果满足了这个条件,运行代码块1,否则不允许这个代码块1) 和其他语言if使用方法一样 判断条件可以不加 括号
在这里插入图片描述
在这里插入图片描述

可以作右值 rust中 if else if 是表达式 表达式可以作右值

在这里插入图片描述

1.2 else if

多个条件判断
和其他语言else if使用方法一样 判断条件可以不加 括号
在这里插入图片描述
在这里插入图片描述

1.3 注意事项

1、在C/C++中我们判断 某个条件/变量 是否为真/假 通过if (条件/变量) 即可 而在rust中 判断真假 必须是bool 类型/ 条件写清楚 如图所示

在这里插入图片描述

2、前面有演示 rust中 if else 是表达式 表达式可以右值 也就是可以返回值

2. 循环

重复执行代码。rust中有 三种 loop while for

2.1 loop

一直循环执行 一段代码(在没有我们打断或让他停止时)
也就是死循环

loop { 要循环执行的代码 }

在这里插入图片描述
如何打断/停止循环 和C/C++一样 使用关键词 break continue 除了类似的功能
在Rust中 这两个关键词还有新的功能
break可以做返回值
break.continue 可以跳转执行(到循环标签)(后面详细介绍)
break: 1、停止循环 不会再循环 2、作返回值
continue: 跳出本次循环 从下次开始循环

1、break 退出循环

在这里插入图片描述

2、break 用作返回值

在这里插入图片描述
可以看到每执行一次 这个数加1 当=22时 退出循环 并返回这个值

3、continue 跳出本次循环 开始新的循环

在这里插入图片描述

4、break/continue跳转执行(跳转到循环标签)
循环标签语法
定义标签: 单引号’ + 标签名 + 冒号:+ loop { }
使用标签: break + 循环标签 = 退出标签对应的循环

在这里插入图片描述

循环标签的作用:表注循环(给循环体打标签)。 配合break/continue 实现控制循环。
当存在多个嵌套循环体时 可以通过循环标签 来表明内外循环及控制循环。让我们更清晰简单快速的控制循环体内的执行流程(掌控代码)。
举例说明

在这里插入图片描述

2.2 while

条件循环 判断条件 满足条件再循环(和C/C++中相似的)

while + 条件 { 循环体 }

在这里插入图片描述

2.3 for

条件循环 循环一定次数 条件为真时循环 否者停止
但是它和其他语言中for存在差别。
通过例子说明
在这里插入图片描述

在这里插入图片描述
可以看到他会把 值传递给 for后面的变量

通过两个例子我们可以看到 for是循环一定次数。并且很适合访问数据元素 遍历元素这种工作。
for和while都是满足条件循环 但是他们还是有区别的
当遍历数据 数据长度会改变 for会自动判断是否为真再循环 而while根据我们的条件(数组长度改变时我们需要修改)

http://www.lryc.cn/news/67744.html

相关文章:

  • 解决Makefile: recipe for target ‘xxx‘ failed
  • 小黑子—多媒体技术与运用基础知识三:数字图形图像处理技术
  • Nginx实现ChatGPT API代理
  • FileNotFoundError: [Errno 2] No such file or directory: ‘dot‘
  • 【分布族谱】正态分布和二项分布的关系
  • 7.设计模式之责任链模式
  • JAVA8的新特性——Stream
  • alias设置快捷键vim使用说明(解决服务器上输入长指令太麻烦的问题)
  • 英语基础句型之旅:从基础到高级
  • 十四、Zuul网关
  • 5项目五:W1R3S-1(思路为主!)
  • Day958.代码的分层重构 -遗留系统现代化实战
  • 分子模拟力场
  • ERP 系统在集团化企业财务管理中的应用
  • 达摩院开源多模态对话大模型mPLUG-Owl
  • Group相关问题-组内节点限制移动范围
  • 程序员该如何学习技术
  • springboot+vue交流互动系统(源码+文档)
  • 【2023华为OD笔试必会25题--C语言版】《01 预定酒店》——排序、二分查找
  • C语言实现队列--数据结构
  • 前端CSS经典面试题总结
  • cookie、session、token的区别是什么
  • leetcode分类刷题 -- 前缀和和哈希
  • 浅谈作为程序员如何写好文档:了解读者
  • 一文读懂国内首本《牛客2023金融科技校园招聘白皮书》
  • 深度学习03-卷积神经网络(CNN)
  • 你真正知道什么是品牌营销么?颠覆你旧有认知
  • pytorch 测量模型运行时间,GPU时间和CPU时间,model.eval()介绍
  • 十三、超时重试机制
  • JAVA常用API - Runtime和System