【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 程序的流程控制结构一具有三种:顺序结构,选择结构,循环结构 顺序结构:从上到下,逐行执行。默认的逻辑 选择结构…...
Sql Server 自动备份
Sql Server 自动备份 文章目录 Sql Server 自动备份1. 打开SQL Server,在管理下找到”维护计划”,右键点击”维护计划向导”,如图;2. 再次点击维护计划向导3. 在选择维护任务下勾选”备份数据库”、”清楚维护任务”4.选择需要备份…...
ThreadLocal的应用
1. ThreadLocal 是什么 JDK 对ThreadLocal的描述为: 此类提供线程局部变量。这些变量与普通变量的不同之处在于,每个访问一个变量的线程(通过其get或set方法)都有自己的、独立初始化的变量副本。ThreadLocal 实例通常是类中的私有…...
中值滤波_中值滤波原理
均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个象素,构成一个滤波模板,即去掉目标象素本身).再用模板中的全体像素的平均值来代替原来像素值.均值滤波也称为线性滤波,其采用的主要方法为领域平均法…...
day15 - 使用图像金字塔进行图像拼接
在我们之前的学习过程中,使用的都是恒定大小的图像,但是在某些情况下,我们需要使用不同分辨率的(相同)图像。例如,当在图像中搜索某些东西(例如人脸)时,我们不确定对象将…...
算法修炼之筑基篇——筑基一层初期(解决01背包问题)
✨博主:命运之光 ✨专栏:算法修炼之练气篇 ✨博主的其他文章:点击进入博主的主页 前言:学习了算法修炼之练气篇想必各位蒟蒻们的基础已经非常的扎实了,下来我们进阶到算法修炼之筑基篇的学习。筑基期和练气期…...
JVM的空间结构
目录 一、概述 二、分类 1.程序计数器区域(Program Counter Register): 2.Java虚拟机栈(Stack): 3.堆区(Heap): 4.方法区(Method Area): 5.本地方法栈(Native Method Stack): 一、概述 JVM分为5个主要区域&…...
图像分割的常用算法
图像分割是指将一幅图像划分成多个子区域或像素集合的过程,其中每个子区域或像素集合具有一定的统计特征或语义信息。图像分割是图像处理中的基础任务,其应用涵盖了医学影像、计算机视觉、机器人技术等多个领域。常用的图像分割算法包括: 1.…...
AI歌手真的可以吗
你听过AI歌手吗?近日,“AI孙燕姿”火遍全网,AI孙燕姿翻唱林俊杰的《她说》、周董的《爱在西元前》、赵雷的《成都》等等歌曲让网友听了直呼:“听了一晚上,出不去了。”你认为AI歌手会取代流行歌手成为主流吗࿱…...
Kubernetes高级存储
Kubernetes高级存储 PV PVC k8s支持的存储系统很多,全部掌握不现实。为了屏蔽底层存储实现的细节,方便用户使用,k8s引入PV和PVC两种资源对象。 PV(Persistent Volume)持久化卷,对底层共享存储的抽象,一般由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和文心一言接连发布,AI工具已经开始走进千家万户。 拿文心一言发布会上的几个问题调戏了 GPT4 一下,看看表现如何。 第一个为文心的回答,第二个为GPT4 的回答。 1. 可以总结一下三体的核心内容吗…...
Tcl-5. format 命令
format 命令和 C 语言中的 printf 和 sprintf 命令类似。它根据一组格式说明来格式化字符 串。此命令不会改变被操作字符串的内容。 [语法]:format spec value1 value2 ... spec 变元包含了格式说明关键词和附加文字。使用%来引入一个关键词,后跟 0 个…...
BloombergGPT: 首个金融垂直领域大语言模型
BloombergGPT: 首个金融垂直领域大语言模型 Bloomberg 刚刚发布了一篇研究论文,详细介绍了他们最新的突破性技术 BloombergGPT。BloombergGPT是一个大型生成式人工智能模型,专门使用大量金融数据进行了训练,以支持金融行业自然语言处理 (NLP…...
CMake深度解析:掌握add_custom_command,精通Makefile生成规则
CMake深度解析:掌握add_custom_command,精通Makefile生成规则 1. CMake简介与基础知识1.1 CMake的基本概念(CMake Basic Concepts)1.1.1 项目(Project)1.1.2 目标(Target)1.1.3 命令…...
基于Yolov5目标检测的物体分类识别及定位(二) -- yolov5运行环境搭建及label格式转换
刚开始跟着网上的教程做,把环境安装错了,后来直接用GitHub的官方教程来安装环境。 地址是yolov5官方团队代码及教程,看readme文件就可以。 系列文章: 基于Yolov5目标检测的物体分类识别及定位(一) -- 数据集…...
Office project 2019安装
哈喽,大家好。今天一起学习的是project 2019的安装,Microsoft Office project项目管理工具软件,凝集了许多成熟的项目管理现代理论和方法,可以帮助项目管理者实现时间、资源、成本计划、控制。有兴趣的小伙伴也可以来一起试试手。…...
【leetcode-mysql】1251. 平均售价
题目: Table: Prices ---------------------- | Column Name | Type | ---------------------- | product_id | int | | start_date | date | | end_date | date | | price | int | ---------------------- (product_id,start_date,end_dat…...
Razor代码复用
1.布局(Layout)复用 Layout的使用,就像WebForm的模板页一样,甚至会更加简单,更加方便和明了。 要使用Layout,首先要在模板页相应的位置添加RenderBody()方法: <!DOCTYPE html><html la…...
PRL:上海交大张文涛团队实现量子材料相关突破
来源:上海交通大学 近期,上海交通大学物理与天文学院张文涛研究组利用自行研制的高能量和高时间分辨率角分辨光电子能谱系统对量子材料1T-TiSe₂电子结构进行了超快激光操控研究。利用超快光激发与电荷密度波相有关的相干声子,引起晶格内原子…...
保姆级教程:用SolidWorks和PCL把装配体转成PCD点云(附完整命令)
从SolidWorks装配体到PCL点云的完整转换指南 在工业设计、逆向工程和三维视觉处理领域,将CAD模型转换为点云数据是一个常见但容易出错的过程。许多工程师和研究人员在使用SolidWorks完成设计后,需要将装配体转换为点云格式(如PCD)…...
实战应用:开发Win11右键菜单管理器——从快马AI生成完整项目开始
实战应用:开发Win11右键菜单管理器——从快马AI生成完整项目开始 最近帮朋友解决Win11右键菜单恢复问题,发现网上教程都是手动改注册表,既麻烦又容易出错。作为开发者,我决定用C#写个可视化工具来管理右键菜单。这个需求其实很典…...
ANARCI抗体序列分析工具:从入门到精通的专业指南
ANARCI抗体序列分析工具:从入门到精通的专业指南 【免费下载链接】ANARCI Antibody Numbering and Antigen Receptor ClassIfication 项目地址: https://gitcode.com/gh_mirrors/an/ANARCI ANARCI(Antibody Numbering and Antigen Receptor Class…...
OpenOCD入门到精通:第23章 添加新的 JTAG 适配器驱动
第23章 添加新的 JTAG 适配器驱动 导读摘要:OpenOCD 支持 40 余种调试适配器,每种适配器背后都有一个遵循统一接口规范的驱动程序。本章从 adapter_driver 结构体出发,逐一解析其回调函数语义,介绍 libusb/HIDAPI 通信层封装,并通过一个完整的简易驱动实现示例,帮助读者掌…...
OpCore-Simplify:智能化解构OpenCore EFI配置难题,让黑苹果安装不再复杂
OpCore-Simplify:智能化解构OpenCore EFI配置难题,让黑苹果安装不再复杂 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为…...
pyqt使用QChartView绘制饼状图详解(QPieSeries)
pyqt使用QChartView绘制柱状图一、工程搭建二、QPieSeries详解1、核心概念2、主要功能和方法2.1、QPieSeries 的常用方法2.2、QPieSlice 的常用属性和方法3、关键点解释4、常见问题二、代码示例1、示例代码2、效果展示一、工程搭建 pyqt6QtCharts模块需要单独安装,…...
告别DDA!用Python手撸Bresenham画线算法,从原理到实现(附完整源码)
告别DDA!用Python手撸Bresenham画线算法,从原理到实现(附完整源码) 在计算机图形学领域,直线绘制是最基础却至关重要的操作。当你需要开发一个2D图形引擎、像素画工具或是任何需要精确控制像素显示的应用程序时&#x…...
macOS高效录屏工具实战指南:从入门到专业的QuickRecorder应用技巧
macOS高效录屏工具实战指南:从入门到专业的QuickRecorder应用技巧 【免费下载链接】QuickRecorder A lightweight screen recorder based on ScreenCapture Kit for macOS / 基于 ScreenCapture Kit 的轻量化多功能 macOS 录屏工具 项目地址: https://gitcode.com…...
省token秘籍:OpenClaw+nanobot镜像长文本处理优化方案
省token秘籍:OpenClawnanobot镜像长文本处理优化方案 1. 当长文本遇上大模型:我的token焦虑症 第一次尝试用OpenClaw处理公司三年的技术文档归档时,我看着账单倒吸一口凉气——单次50万token的消耗让我的个人预算瞬间见底。这促使我开始探索…...
OpenClaw会议纪要大师:Qwen3-32B实时转录飞书语音会议
OpenClaw会议纪要大师:Qwen3-32B实时转录飞书语音会议 1. 为什么需要自动化会议纪要 每次开完会最头疼的就是整理会议纪要。作为团队的技术负责人,我每周要参加至少8场跨部门会议,传统的手动记录方式让我苦不堪言——要么记录不全重点&…...
