RUST语言流控制语句使用示例

news2024/10/5 23:29:42

1.判断语句

单条件判断:

let mut x=128;//声明一个32位整数
    x=512;//修改变量原来的值为新值
    //如果 ... 否则
    //判断变量x是否大于256
    if x>256 {
        println!("x>256,x={}",x);
    }else {
        println!("x<256,x={}",x);
    }

    let is_ok:bool = true;
    //rust中不用()
    if is_ok {
        println!("is_ok:{}",is_ok);
    }
    //使用表示式计算的值作为条件
    let a=1;
    if a !=0 {
        println!("条件成立!!!");
    }

多条件判断:

//多个条件判断
    let ret=123;
    if ret == 1 {
        println!("条件成立:{}",ret);
    }else if ret == 2 {
        println!("条件成立:{}",ret);
    }else if ret == 3 {
        println!("条件成立:{}",ret);
    }else {
        println!("条件不匹配:{}",ret);
    }

判断语句作为表达式使用:

//条件作为表达式使用
    let isRet = true;
    //整数使用
    let by_ret = if isRet { 123} else {456};
    //字符串使用,指向字符串地址
    let byStr:&str = if isRet { "Yes"} else {"No"};
    println!("Str:{},Ret:{}",byStr,by_ret);

2.循环语句

//循环条件
    let mut count:i8=0;
    //只输出10次
    loop {
        if count==10 {
            break;
        }
        println!("一直打印...");
        count +=1;
    }

循环语句作为表达式使用:

//循环作为块使用
    let mut tmp_count:i8=0;
    let mut tmpRet=0;
    //变量作为循环返回结果时不要指定类型
    let x5count = loop {
        //如果循环5次就退出循环
         if tmp_count == 5 {
             break;
         }
        //1*5 + 2*5 + 3*5 + 4*5 = 50
        tmpRet += tmp_count * 5; //每次乘5
        tmp_count+=1;
    };
    println!("tmpRet:{}",tmpRet);
循环嵌套:
//循环嵌套
    let mut i=0;
    let mut j=0;
    //增加循环标志
    'out_loop: loop {
        i+=1;
        println!("i:{}",i);
        if i==10 { break; }
        loop {
            j+=1;
            if j==5 {
                break 'out_loop;//内循环跳出到外循环
            }
            println!("j:{}",j);
        }
    }

while循环:

//while循环使用
    let mut times = 5;
    while times >0 {
        println!("==={}",times);
        times-=1;
    }

for循环使用:

//for循环使用
    let arr = [1,2,3,4,5,6,7,8,9];
    //遍历数组
    for v in arr {
        println!("for循环:{}",v);
    }

    //范围遍历,反转
    for v in (1..21).rev()  {
        println!("for循环反转===:{}",v);
    }

完整示例代码:

fn main() {
    println!("RUST语言流控制");
    let mut x=128;//声明一个32位整数
    x=512;//修改变量原来的值为新值
    //如果 ... 否则
    //判断变量x是否大于256
    if x>256 {
        println!("x>256,x={}",x);
    }else {
        println!("x<256,x={}",x);
    }

    let is_ok:bool = true;
    //rust中不用()
    if is_ok {
        println!("is_ok:{}",is_ok);
    }
    //使用表示式计算的值作为条件
    let a=1;
    if a !=0 {
        println!("条件成立!!!");
    }
    //多个条件判断
    let ret=123;
    if ret == 1 {
        println!("条件成立:{}",ret);
    }else if ret == 2 {
        println!("条件成立:{}",ret);
    }else if ret == 3 {
        println!("条件成立:{}",ret);
    }else {
        println!("条件不匹配:{}",ret);
    }
    //条件作为表达式使用
    let isRet = true;
    //整数使用
    let by_ret = if isRet { 123} else {456};
    //字符串使用,指向字符串地址
    let byStr:&str = if isRet { "Yes"} else {"No"};
    println!("Str:{},Ret:{}",byStr,by_ret);

    //循环条件
    let mut count:i8=0;
    //只输出10次
    loop {
        if count==10 {
            break;
        }
        println!("一直打印...");
        count +=1;
    }

    //循环作为块使用
    let mut tmp_count:i8=0;
    let mut tmpRet=0;
    //变量作为循环返回结果时不要指定类型
    let x5count = loop {
        //如果循环5次就退出循环
         if tmp_count == 5 {
             break;
         }
        //1*5 + 2*5 + 3*5 + 4*5 = 50
        tmpRet += tmp_count * 5; //每次乘5
        tmp_count+=1;
    };
    println!("tmpRet:{}",tmpRet);

    //循环嵌套
    let mut i=0;
    let mut j=0;
    //增加循环标志
    'out_loop: loop {
        i+=1;
        println!("i:{}",i);
        if i==10 { break; }
        loop {
            j+=1;
            if j==5 {
                break 'out_loop;//内循环跳出到外循环
            }
            println!("j:{}",j);
        }
    }

    //while循环使用
    let mut times = 5;
    while times >0 {
        println!("==={}",times);
        times-=1;
    }

    //for循环使用
    let arr = [1,2,3,4,5,6,7,8,9];
    //遍历数组
    for v in arr {
        println!("for循环:{}",v);
    }

    //范围遍历,反转
    for v in (1..21).rev()  {
        println!("for循环反转===:{}",v);
    }
}

输出:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1566675.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5.Python数据分析—Pandas数据结构详讲

5.Python数据分析—Pandas数据结构详讲 摘要个人简介简介Series定义和特点创建方法属性和方法 DataFrame定义和特点创建方法数据获取和操作 索引对象种类和应用作用和管理 摘要 Pandas是一个开源的Python数据分析库&#xff0c;提供了高性能、易用的数据结构和数据分析工具。它…

突破校园网限速:使用 iKuai 多拨分流负载均衡 + Clash 代理(内网带宽限制通用)

文章目录 1. 简介2. iKuai 部署2.1 安装 VMware2.2 安装 iKuai(1) 下载固件(2) 安装 iKuai 虚拟机(3) 配置 iKuai 虚拟机(4) 配置 iKuai(5) 配置多拨分流 2.3 测试速度 3. Clash 部署3.1 准备工作(1) 配置磁盘分区(2) 安装 Docker(3) 安装 Clash(4) 设置代理 1. 简介 由于博主…

openwrt开发包含路由器基本功能的web问题记录

1.这里的扫描怎么实现的先找一些luci代码&#xff0c;在openwrt21版本后&#xff0c;luci用js替换了lua写后台&#xff0c;先找一些代码路径 在openrwt15这部分代码是在这个目录下 feeds/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm 里面包含…

现代化个人博客系统 ModStartBlog v9.2.0

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场&#xff0c;后台一键快速安装会…

JavaScript基础代码练习之翻转数组

一、要求将给定数组 [red, green, blue, pink, purple] 的内容反转存放&#xff0c;并将结果输出到控制台。 二、编写代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" cont…

Windows 中的硬链接、软连接、快捷方式和普通文件

在 Windows 中&#xff0c;文件可以有四种类型&#xff1a; 硬链接软连接快捷方式普通文件 当我们正常创建一个文件时&#xff0c;这个文件就是普通文件 echo hello > a.txt (Get-Item "a.txt").LinkType -eq $null # 输出 True然后我们可以为其添加一个软连接…

计算机视觉之三维重建(6)---多视图几何(上)

文章目录 一、运动恢复结构问题&#xff08;SfM&#xff09;二、欧式结构恢复2.1 概述2.2 求解2.3 欧式结构恢复歧义 三、仿射结构恢复3.1 概述3.2 因式分解法3.3 总结3.4 仿射结构恢复歧义 一、运动恢复结构问题&#xff08;SfM&#xff09; 1. 运动恢复结构问题&#xff1a;通…

Stable Diffusion扩散模型推导公式的基础知识

文章目录 1、独立事件的条件概率2、贝叶斯公式、先验概率、后验概率、似然、证据3、马尔可夫链4、正态分布 / 高斯分布5、重参数化技巧6、期望7、KL散度 、高斯分布的KL散度8、极大似然估计9、ELBO :Evidence Lower Bound10、一元二次方程 1、独立事件的条件概率 A 和 B 是两个…

基于lora技术微调Gemma(2B)代码实践

一、前置条件 获得模型访问权&#xff0c;选择Colab运行时&#xff0c;配置训练环境。 先在Kaggle上注册&#xff0c;然后获得Gemma 2B 的访问权&#xff1b; 然后在Google colab 配置环境&#xff0c;主要是GPU的选择&#xff0c;免费的是T4&#xff0c;建议采用付费的A100…

【JVM基础】JVM入门,详讲JVM

组建团队中......加v备注进群个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏…

[蓝桥杯练习题]出差

一道DJ题,重要的是隔离时间,把隔离时间加在边权上即可 现实生活的题大多都是无向图建图,需要边的两端点各自上邻接表和相同权重 #include<bits/stdc.h> using namespace std; #define ll long long const int N1005; const int M10005; struct edge{int to;ll w;edge(int…

电商好评语整理与优化:让繁琐工作变得轻松高效

在电子商务领域&#xff0c;客户的好评是店铺信誉和产品质量的重要体现。然而&#xff0c;整理和优化这些好评语却是一项既繁琐又需要细致耐心的工作。本文将探讨如何高效地进行电商好评语的筛选、分类和优化&#xff0c;让这一工作变得更加轻松和高效。 一、明确整理目的 在开…

从零开始学RSA加密解密过程

因为文字太过晦涩难懂&#xff0c;下面以图示的方法来理解RSA加密解密的过程 以上过程中因为HACK无法得到p,q信息&#xff0c;也就是无法计算出d , 导致了无法解密 c 得到 m (n,e) 公钥 (d,n) 私钥 (p,q,n,e) 生成的加密必要信息 必要的公式 c ≡ me mod n ----------->…

单片机家电产品学习记录--IO推挽输出

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 单片机家电产品–IO推挽输出 前言 记录学习单片机家电产品内容 已转载记录为主 一、知识点 1 单片机IO口科普&#xff1a;推挽输出、开漏输出详解 推挽输出既可以输出低…

Android 性能优化之黑科技开道(一)

1. 缘起 在开发电视版智家 App9.0 项目的时候&#xff0c;发现了一个性能问题。电视系统原本剩余的可用资源就少&#xff0c;而随着 9.0 功能的进一步增多&#xff0c;特别是门铃、门锁、多路视频同屏监控后等功能的增加&#xff0c;开始出现了卡顿情况。 经过调研分析发现有…

OpenHarmony实战:Makefile方式组织编译的库移植

以yxml库为例&#xff0c;其移植过程如下文所示。 源码获取 从仓库获取yxml源码&#xff0c;其目录结构如下表&#xff1a; 表1 源码目录结构 名称描述yxml/bench/benchmark相关代码yxml/test/测试输入输出文件&#xff0c;及测试脚本yxml/Makefile编译组织文件yxml/.gitat…

C语言:文件操作(一)

目录 前言 1、为什么使用文件 2、什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3、文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 结&#xff08;一&#xff09; 前言 本篇文章将介绍C语言的文件操作&#xff0c;在后面的内容讲到&#xff1a;为什么使用文…

2024-04-03 NO.4 Quest3 手势追踪抓取物体

文章目录 1 手势抓取方式1.1 Hand Grab1.2 Touch Hand Grab1.3 Distance Hand Grab 2 HandGrabExamples 示例场景2.1 Interactor 对象2.2 Interactable 对象2.2.1 父子结构2.2.2 “Hand Grab lnteractable” 脚本2.2.3 “Move Towards Target Provider” 脚本2.2.4 其他 Moveme…

OpenHarmony实战:CMake方式组织编译的库移植

以double-conversion库为例&#xff0c;其移植过程如下文所示。 源码获取 从仓库获取double-conversion源码&#xff0c;其目录结构如下表&#xff1a; 表1 源码目录结构 名称描述double-conversion/cmake/CMake组织编译使用到的模板double-conversion/double-conversion/源…

浅谈分布式光伏电站的运维管理

摘要&#xff1a;随着近些年我国对节能降耗关注力度的持续加大&#xff0c;为满足人们不断增长的电能需求&#xff0c;光伏发电产业得到迅猛发展&#xff0c;其中分布式光伏发电的比重持续增长。在打赢脱贫攻坚战的大背景下&#xff0c;国家电网公司探索出一条“阳光扶贫”的扶…