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

【Go编程语言】流程控制

流程控制


文章目录

  • 流程控制
  • 一、if 语句
    • 1.if 嵌套语句
  • 二、switch 语句
  • 三、for 循环
  • 四、string


在这里插入图片描述


程序的流程控制结构一具有三种:顺序结构,选择结构,循环结构

在这里插入图片描述

  • 顺序结构:从上到下,逐行执行。默认的逻辑

  • 选择结构:条件满足某些代码才会执行

    • if

    • switch

    • select ,后面 channel 再讲

  • 循环结构:条件满足某些代码会被反复执行0-N次

    • for

一、if 语句

条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为false的情况在执行另外的语句。

下图展示了程序语言中条件语句的结构:
在这里插入图片描述

package mainimport "fmt"func main() {// 分数var score int = 66if score >= 90 && score <= 100 {fmt.Println("优秀")} else if score >= 80 && score < 90 {fmt.Println("良好")} else if score >= 60 && score < 80 {fmt.Println("及格")} else {fmt.Println("不及格")}}

输出
在这里插入图片描述

1.if 嵌套语句

if 布尔表社式 1 {/* 在布尔表达式 1 为 true 3:执行 */if 布尔表达式 2 {/* 在布尔表达式 2 true 时执行 */}
}
package mainimport "fmt"func main() {var one, two int// 初始密码var pwd int = 12345678// 接收用户输入密码fmt.Print("请输入密码:")fmt.Scan(&one)// 功能:验证密码是否正确if one == pwd {fmt.Print("请再次输入密码:")fmt.Scan(&two)if two == pwd {fmt.Println("登录成功")} else {fmt.Println("第二次输入密码错误,登录失败,请重新输入密码……")}} else {fmt.Println("输入密码错误,登录失败,请重新输入密码……")}}

输出
在这里插入图片描述

二、switch 语句

switch语句用于基于不同条件执行不同动作,每一个case分支都是唯一的,从上至下逐一测试,直到匹配为止。

switch var1 { case test1:...case test2:...		defauIt:...
}

switch语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break.。switch默认情况下 case 最后自带 break 语句

package mainimport "fmt"func main() {var score string = "D"// 匹配switch score {case "A":fmt.Println("等级为A,成绩在90~100范围内")case "B":fmt.Println("等级为B,成绩在80~90范围内")case "C":fmt.Println("等级为C,成绩在60~79范围内")default:fmt.Println("等级为D,成绩在0~59范围内")}// switch 默认条件 bool = trueswitch {case false:fmt.Println("false")case true:fmt.Println("true")default:fmt.Println("其他")}
}

输出
在这里插入图片描述

fallthrough 贯穿,直通

switch默认情况下匹配成功后就不会执行其他case,如果我们需要执行后面的case,可以使用 fallthrough 穿透case使用 fallthrough 会强制执行后面的 case 语句,fallthrough不会判断下条case的表达结果是否为true.

package mainimport "fmt"func main() {a := false// switch 默认条件 bool = trueswitch a {case false:fmt.Println("false")fallthrough // case 穿透,不管下一个条件是否满足,都会执行case true:fmt.Println("true")default:fmt.Println("其他")}
}

输出
在这里插入图片描述

package mainimport "fmt"func main() {a := false// switch 默认条件 bool = trueswitch a {case false:fmt.Println("false")fallthrough // case 穿透,不管下一个条件是否满足,都会执行case true:if a == false {break // 终止 case 穿透}fmt.Println("true")default:fmt.Println("其他")}
}

输出
在这里插入图片描述

三、for 循环

在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。for 循环是一个循环控制结构,可以执行指定次数的循环。

package mainimport "fmt"func main() {// for 条件的起始值;循环条件;控制变量自增或自减// for ;循环条件;// for {} 无限循环i := 1for {fmt.Println(i)i++}sum := 0// for 给控制变量赋值初值,循环条件给控制变量增量或减量\// 计算 1 到 10 的数字之和for i := 1; i <= 10; i++ {// 循环体sum += i}fmt.Println(sum)
}

栗子:输出一个10*10的方阵

package mainimport "fmt"func main() {// i 控制行, j 控制列 for i := 0; i < 10; i++ {for j := 0; j < 10; j++ {fmt.Print("* ")}fmt.Println()}}

输出
在这里插入图片描述
栗子:九九乘法表

package mainimport "fmt"func main() {// i 控制行, j 控制列for i := 1; i < 10; i++ {for j := 1; j <= i; j++ {fmt.Printf("%d*%d=%d \t", j, i, j*i)}fmt.Println()}}

输出
在这里插入图片描述

break 结束当前整个循环

package mainimport "fmt"func main() {for i := 1; i <= 6; i++ {if i == 4 {break}fmt.Println(i)}}

continue 结束本次循环

package mainimport "fmt"func main() {for i := 1; i <= 6; i++ {if i == 4 {continue}fmt.Println(i)}}

输出
在这里插入图片描述

四、string

什么是String

Go中的字符串是一个字节的切片,可以通过将其内容封装在""中来创建字符串,Go中的字符串是 Unicode 兼容的,并日是 UTF-8 编码。字符串是一些字节的集合。

package mainimport "fmt"func main() {str := "hello,guan"fmt.Println(str)// 获取字符串的长度 lenfmt.Println("字符串长度为:", len(str))// 获取指定的字节fmt.Println("字节打印:", str[4])fmt.Printf("%c", str[4])fmt.Println()for i := 0; i < len(str); i++ {fmt.Printf("%c\n", str[i])}// for range 循环,遍历数组、切片....// 返回下标和对应的值,使用这个值就行了for i, v := range str {fmt.Print(i)fmt.Print("--")fmt.Printf("%c", v)fmt.Println()}}

在这里插入图片描述

相关文章:

【Go编程语言】流程控制

流程控制 文章目录 流程控制一、if 语句1.if 嵌套语句 二、switch 语句三、for 循环四、string 程序的流程控制结构一具有三种&#xff1a;顺序结构&#xff0c;选择结构&#xff0c;循环结构 顺序结构&#xff1a;从上到下&#xff0c;逐行执行。默认的逻辑 选择结构&#xf…...

Sql Server 自动备份

Sql Server 自动备份 文章目录 Sql Server 自动备份1. 打开SQL Server&#xff0c;在管理下找到”维护计划”&#xff0c;右键点击”维护计划向导”&#xff0c;如图&#xff1b;2. 再次点击维护计划向导3. 在选择维护任务下勾选”备份数据库”、”清楚维护任务”4.选择需要备份…...

ThreadLocal的应用

1. ThreadLocal 是什么 JDK 对ThreadLocal的描述为&#xff1a; 此类提供线程局部变量。这些变量与普通变量的不同之处在于&#xff0c;每个访问一个变量的线程&#xff08;通过其get或set方法&#xff09;都有自己的、独立初始化的变量副本。ThreadLocal 实例通常是类中的私有…...

中值滤波_中值滤波原理

均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个象素,构成一个滤波模板,即去掉目标象素本身).再用模板中的全体像素的平均值来代替原来像素值.均值滤波也称为线性滤波,其采用的主要方法为领域平均法…...

day15 - 使用图像金字塔进行图像拼接

在我们之前的学习过程中&#xff0c;使用的都是恒定大小的图像&#xff0c;但是在某些情况下&#xff0c;我们需要使用不同分辨率的&#xff08;相同&#xff09;图像。例如&#xff0c;当在图像中搜索某些东西&#xff08;例如人脸&#xff09;时&#xff0c;我们不确定对象将…...

算法修炼之筑基篇——筑基一层初期(解决01背包问题)

✨博主&#xff1a;命运之光 ✨专栏&#xff1a;算法修炼之练气篇​​​​​ ✨博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;学习了算法修炼之练气篇想必各位蒟蒻们的基础已经非常的扎实了&#xff0c;下来我们进阶到算法修炼之筑基篇的学习。筑基期和练气期…...

JVM的空间结构

目录 一、概述 二、分类 1.程序计数器区域(Program Counter Register)&#xff1a; 2.Java虚拟机栈(Stack)&#xff1a; 3.堆区(Heap)&#xff1a; 4.方法区(Method Area)&#xff1a; 5.本地方法栈(Native Method Stack)&#xff1a; 一、概述 JVM分为5个主要区域&…...

图像分割的常用算法

图像分割是指将一幅图像划分成多个子区域或像素集合的过程&#xff0c;其中每个子区域或像素集合具有一定的统计特征或语义信息。图像分割是图像处理中的基础任务&#xff0c;其应用涵盖了医学影像、计算机视觉、机器人技术等多个领域。常用的图像分割算法包括&#xff1a; 1.…...

AI歌手真的可以吗

你听过AI歌手吗&#xff1f;近日&#xff0c;“AI孙燕姿”火遍全网&#xff0c;AI孙燕姿翻唱林俊杰的《她说》、周董的《爱在西元前》、赵雷的《成都》等等歌曲让网友听了直呼&#xff1a;“听了一晚上&#xff0c;出不去了。”你认为AI歌手会取代流行歌手成为主流吗&#xff1…...

Kubernetes高级存储

Kubernetes高级存储 PV PVC k8s支持的存储系统很多&#xff0c;全部掌握不现实。为了屏蔽底层存储实现的细节&#xff0c;方便用户使用&#xff0c;k8s引入PV和PVC两种资源对象。 PV(Persistent Volume)持久化卷&#xff0c;对底层共享存储的抽象&#xff0c;一般由k8s管理员进…...

云原生之使用Docker部署docker-compose-ui工具

云原生之使用Docker部署docker-compose-ui工具 一、Docker Compose UI介绍二、检查本地docker环境1.检查系统版本2.检查docker状态 三、下载Docker Compose UI镜像四、部署Docker Compose UI服务1.新建安装目录2.创建Docker Compose UI容器3.检查Docker Compose UI容器状态4.查…...

文心一言 vs GPT4

本周真是科技爱好者的狂欢节。GPT4和文心一言接连发布&#xff0c;AI工具已经开始走进千家万户。 拿文心一言发布会上的几个问题调戏了 GPT4 一下&#xff0c;看看表现如何。 第一个为文心的回答&#xff0c;第二个为GPT4 的回答。 1. 可以总结一下三体的核心内容吗&#xf…...

Tcl-5. format 命令

format 命令和 C 语言中的 printf 和 sprintf 命令类似。它根据一组格式说明来格式化字符 串。此命令不会改变被操作字符串的内容。 [语法]&#xff1a;format spec value1 value2 ... spec 变元包含了格式说明关键词和附加文字。使用%来引入一个关键词&#xff0c;后跟 0 个…...

BloombergGPT: 首个金融垂直领域大语言模型

BloombergGPT: 首个金融垂直领域大语言模型 Bloomberg 刚刚发布了一篇研究论文&#xff0c;详细介绍了他们最新的突破性技术 BloombergGPT。BloombergGPT是一个大型生成式人工智能模型&#xff0c;专门使用大量金融数据进行了训练&#xff0c;以支持金融行业自然语言处理 (NLP…...

CMake深度解析:掌握add_custom_command,精通Makefile生成规则

CMake深度解析&#xff1a;掌握add_custom_command&#xff0c;精通Makefile生成规则 1. CMake简介与基础知识1.1 CMake的基本概念&#xff08;CMake Basic Concepts&#xff09;1.1.1 项目&#xff08;Project&#xff09;1.1.2 目标&#xff08;Target&#xff09;1.1.3 命令…...

基于Yolov5目标检测的物体分类识别及定位(二) -- yolov5运行环境搭建及label格式转换

刚开始跟着网上的教程做&#xff0c;把环境安装错了&#xff0c;后来直接用GitHub的官方教程来安装环境。 地址是yolov5官方团队代码及教程&#xff0c;看readme文件就可以。 系列文章&#xff1a; 基于Yolov5目标检测的物体分类识别及定位&#xff08;一&#xff09; -- 数据集…...

Office project 2019安装

哈喽&#xff0c;大家好。今天一起学习的是project 2019的安装&#xff0c;Microsoft Office project项目管理工具软件&#xff0c;凝集了许多成熟的项目管理现代理论和方法&#xff0c;可以帮助项目管理者实现时间、资源、成本计划、控制。有兴趣的小伙伴也可以来一起试试手。…...

【leetcode-mysql】1251. 平均售价

题目&#xff1a; Table: Prices ---------------------- | Column Name | Type | ---------------------- | product_id | int | | start_date | date | | end_date | date | | price | int | ---------------------- (product_id&#xff0c;start_date&#xff0c;end_dat…...

Razor代码复用

1.布局&#xff08;Layout&#xff09;复用 Layout的使用&#xff0c;就像WebForm的模板页一样&#xff0c;甚至会更加简单&#xff0c;更加方便和明了。 要使用Layout&#xff0c;首先要在模板页相应的位置添加RenderBody()方法&#xff1a; <!DOCTYPE html><html la…...

PRL:上海交大张文涛团队实现量子材料相关突破

来源&#xff1a;上海交通大学 近期&#xff0c;上海交通大学物理与天文学院张文涛研究组利用自行研制的高能量和高时间分辨率角分辨光电子能谱系统对量子材料1T-TiSe₂电子结构进行了超快激光操控研究。利用超快光激发与电荷密度波相有关的相干声子&#xff0c;引起晶格内原子…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...