【Go编程】流程控制

news/2025/1/11 8:09:22/文章来源:https://www.cnblogs.com/o-O-oO/p/18665131

一、流程控制的作用:

流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。

二、控制语句的分类:

控制语句分为三类:顺序、选择和循环。

顺序结构”代表“先执行a,再执行b”的逻辑。

条件判断结构”代表“如果…,则…”的逻辑。

循环结构”代表“如果…,则再继续…”的逻辑。

三种流程控制语句就能表示所有的事情!不信,你可以试试拆分你遇到的各种事情。这三种基本逻辑结构是相互支撑的,它们共同构成了算法的基本结构,无论怎样复杂的逻辑结构,都可以通过它们来表达。所以任何一种高级语言都具备上述两种结构。

本章是大家真正进入编程界的“门票”。

三、流程控制的流程:

if 分支-单分支

1、基本语法

if 条件表达式 {逻辑代码}

当条件表达式为ture时,就会执行得的代码。

PS:条件表达式左右的()可以不写,也建议不写

PS:if和表达式中间,一定要有空格

PS:在Golang中,{}是必须有的,就算你只写一行代码。

2、代码练习:

package main
import "fmt"
func main(){//实现功能:如果口罩的库存小于30个,提示:库存不足://var count int = 100//单分支:// if count < 30 {// 	fmt.Println("对不起,口罩存量不足")// }//if后面表达式,返回结果一定是true或者false,//如果返回结果为true的话,那么{}中的代码就会执行//如果返回结果为false的话,那么{}中的代码就不会执行//if后面一定要有空格,和条件表达式分隔开来//{}一定不能省略//条件表达式左右的()是建议省略的//在golang里,if后面可以并列的加入变量的定义:if count := 20;count < 30 {fmt.Println("对不起,口罩存量不足")}
}

if 分支-双分支

1、基本语法

if 条件表达式 {逻辑代码1
} else {逻辑代码2
}

当条件表达式成立,即执行逻辑代码1,否则执行逻辑代码2。{}也是必须有的。

PS:下面的格式是错误的:

if 条件表达式 {逻辑代码1
}
else {逻辑代码2
} 

PS:空格加上,美观规范

2、代码练习:

package main
import "fmt"
func main(){//实现功能:如果口罩的库存小于30个,提示:库存不足,否则提示:库存充足//定义口罩的数量:var count int = 70if count < 30 { //这个条件表达式返回的是true的话,后面{}执行了fmt.Println("库存不足")} else {//count >= 30fmt.Println("库存充足")}//双分支一定会二选一走其中一个分支。
}

if分支-多分支

1、基本语法

if 条件表达式1 {逻辑代码1
} else if 条件表达式2 {逻辑代码2
}
.......
else {逻辑代码n
}

2、代码练习:

package main
import "fmt"
func main(){//实现功能:根据给出的学生分数,判断学生的等级:// >=90  -----A// >=80  -----B// >=70  -----C// >=60  -----D// <60   -----E//方式1:利用if单分支实现://定义一个学生的成绩:var score int = 18//对学生的成绩进行判定:// if score >= 90 {// fmt.Println("您的成绩为A级别")// }// if score >= 80 && score < 90 {// fmt.Println("您的成绩为B级别")// }// if score >= 70 && score < 80 {// fmt.Println("您的成绩为C级别")// }// if score >= 60 && score < 70 {// fmt.Println("您的成绩为D级别")// }// if score < 60 {// fmt.Println("您的成绩为E级别")// }//上面方式1利用多个单分支拼凑出多个选择,多个选择是并列的,依次从上而下顺序执行,即使走了第一个分支,那么其它分支也是需要判断//方式2:多分支:优点:如果已经走了一个分支了,那么下面的分支就不会再去判断执行了// if score >= 90 {// fmt.Println("您的成绩为A级别")// } else if score >= 80 {//else隐藏:score < 90// fmt.Println("您的成绩为B级别")// } else if score >= 70 {//score < 80// fmt.Println("您的成绩为C级别")// } else if score >= 60 {//score < 70// fmt.Println("您的成绩为D级别")// } else {//score < 60// fmt.Println("您的成绩为E级别")// } //建议你保证else的存在,只有有了else才会真正 起到多选一 的效果if score > 10 {fmt.Println("aaa")} else if score > 6{fmt.Println("bbb")}
}

Switch

1、基本语法:

switch 表达式 {case 值1,值2,.….:语句块1case 值3,值4,...:语句块2....default:语句块
}

2、代码练习:

package main
import "fmt"
func main(){//实现功能:根据给出的学生分数,判断学生的等级:// >=90  -----A// >=80  -----B// >=70  -----C// >=60  -----D// <60   -----E//给出一个学生分数:var score int = 187//根据分数判断等级://switch后面是一个表达式,这个表达式的结果依次跟case进行比较,满足结果的话就执行冒号后面的代码。//default是用来“兜底”的一个分支,其它case分支都不走的情况下就会走default分支//default分支可以放在任意位置上,不一定非要放在最后。switch score/10 {case 10 :fmt.Println("您的等级为A级")case 9 :fmt.Println("您的等级为A级")case 8 :fmt.Println("您的等级为B级")case 7 :fmt.Println("您的等级为C级")case 6 :fmt.Println("您的等级为D级")case 5 :fmt.Println("您的等级为E级")case 4 :fmt.Println("您的等级为E级")case 3 :fmt.Println("您的等级为E级")case 2 :fmt.Println("您的等级为E级")case 1 :fmt.Println("您的等级为E级")case 0 :fmt.Println("您的等级为E级")default:fmt.Println("您的成绩有误")}
}

3、注意事项:

(1)switch后是一个表达式(即:常量值、变量、一个有返回值的函数等都可以)

(2)case后面的值如果是常量值(字面量),则要求不能重复

(3)case后的各个值的数据类型,必须和 switch 的表达式数据类型一致

(4)case后面可以带多个值,使用逗号间隔。比如 case 值1,值2...

(5)case后面不需要带break

(6)default语句不是必须的,位置也是随意的。

(7)switch后也可以不带表达式,当做if分支来使用

(8)switch后也可以直接声明/定义一个变量,分号结束,不推荐

(9)switch穿透,利用fallthrough关键字,如果在case语句块后增加fallthrough ,则会继续执行下一个case,也叫switch穿透。

原创 对抗一下 步步运维步步坑

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在CDN上搭建支持反向代理的C2服务器(下)

免责声明: 本文技术只做研究之用,禁止用来从事非法用途,如有使用文章中的技术从事非法活动,一切后果由使用者自负,与作者无关。一、摘要 在上一篇文章中, 完成了Microsoft Azure 上的环境准备工作, 已经成功安装并配置了用于 Nginx 反向代理的虚拟机(VM)和用于 Cobalt Strike…

在CDN上搭建支持反向代理的C2服务器(上)

免责声明: 本文技术只做研究之用,禁止用来从事非法用途,如有使用文章中的技术从事非法活动,一切后果由使用者自负,与作者无关。一、摘要 在本文中,将探讨在微软Azure的CDN网络中使用C2域名和Nginx作为反向代理来构建一个红队基础设施。内容包括:C2域的选择和DNS配置、Cobalt St…

换个 AI 写

被遗忘,无法参与,无法长时间停课,对学校或教练组心存疑虑。每月的考试成绩。为了奥运会,并花费了无法停课的时间,以换取比赛课程的月度考试成绩。他们可以通过宣传来间接提高成绩。在未来的职业发展中,她取得了优异的成绩。缺乏时间,对江平在奥运会上取得优异成绩的怀疑…

从Resource中加载shellcode

以下文章来源于Relay学安全 ,作者FireGhost 前言 在开发malware过程中通常有两种加载shellcode方式: 1.把shellcode直接以硬编码的方式写入代码中 2.采用分离加载的方式 制作一个shellcode loader 从本地读取shellcode到内存中进行运行。 本文先讲解第一种方式,这个方式有一…

gRPC:第二代rpc服务

背景 在如今云原生技术的大环境下,rpc服务作为最重要的互联网技术,蓬勃发展,诞生了许多知名基于rpc协议的框架,其中就有本文的主角gRPC技术。一款高性能、开源的通用rpc框架 作者作为一名在JD实习的Cpper,经过一段时间的学习和实践,发现了C++与Java之间的种种不同,这也让…

Tensorflow2.0自定义层

Tensorflow2.0自定义层 tensorflow2.0建议使用tf.keras作为构建神经网络的高级API。 也就是说,大多数TensorFlow API都可用于eager执行模式。 from __future__ import absolute_import, division, print_function, unicode_literals !pip install -q tensorflow==2.0.0-alpha0…

推荐4本书《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》、《AI芯片开发核心技术详解》

4本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该…

arcpy环境搭建

背景 在ArcMap和ArcGIS Pro中,都可以使用arcpy,但是代码都要在相应环境中运行才行。 环境选择 1.在软件安装目录中运行arcpy 对于ArcMap中,可以直接在以下目录中运行arcpy代码: C:\Python27\ArcGIS10.4 对于ArcGIS Pro,可以在以下目录运行arcpy代码: C:\Program Files\Ar…

arcpy搭建环境

背景 在ArcMap和ArcGIS Pro中,都可以使用arcpy,但是代码都要在相应环境中运行才行。 环境选择 1.在软件安装目录中运行python 对于ArcMap中,可以直接在以下目录中运行arcpy代码: C:\Python27\ArcGIS10.4 对于ArcGIS Pro,可以在以下目录运行arcpy代码: C:\Program Files\A…

20250110-FortuneWheel 攻击事件:竟然不设滑点,那就体验一下 Force Investment 吧

背景信息 攻击交易:https://app.blocksec.com/explorer/tx/bsc/0xd6ba15ecf3df9aaae37450df8f79233267af41535793ee1f69c565b50e28f7da 漏洞合约:https://vscode.blockscan.com/56/0xc86A50d30c2da607DE91375f363DeDFb3086b9D4 FortuneWheel 合约实现了幸运轮盘竞猜功能,合约…

在Ubuntu 20.04上安装Qt 5.15.0

在Ubuntu 20.04上安装Qt 5.15.01 安装必要的依赖项:sudo apt-get install build-essential \libgl1-mesa-dev \libglu1-mesa-dev \libegl1-mesa-dev \libgles2-mesa-dev \libxrandr-dev \libxext-dev \libxtst-dev \libxrender-dev \libxkbfile-dev \libsqlite3-dev \libssl-…

vscode上配置docker 宝塔环境的xdebug环境,经历过的哪些坑(macbook版)

在macbook中配置vscode对docker中宝塔的php代码进行断点设置的常见排查方式先说配置的几个逻辑: 1. vscode是要通过php debug插件启动9003监听端口 2. docker的宝塔启动xdebug后,是将运行信息推送到vscode宿主的9003端口;这里有个难点,docker内的宝塔和vscode不在一个本地,…