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

【Go】五、流程控制

文章目录

  • 1、if
  • 2、switch
  • 3、for
  • 4、for range
  • 5、break
  • 6、continue
  • 7、goto
  • 8、return

1、if

  • 条件表达式左右的()是建议省略的
  • if后面一定要有空格,和条件表达式分隔开来
  • { }一定不能省略
  • if后面可以并列的加入变量的定义
if count := 20;count < 30 {fmt.Println("对不起,口罩存量不足")
}
  • 注意else的位置
if 条件表达式 {逻辑代码1
} else {逻辑代码2
}

在这里插入图片描述

  • 多分支
//如果已经走了一个分支了,那么下面的分支就不会再去判断执行了
//多选一
if 条件表达式1 {逻辑代码1
} else if 条件表达式2 {    //隐藏&&不满足表达式1逻辑代码2
}
.......
else {逻辑代码n
}

2、switch

  • switch后是一个表达式(即:常量值、变量、一个有返回值的函数等都可以)
  • case后面的值如果是常量值(字面量),则要求不能重复
  • case后的各个值的数据类型,必须和 switch 的表达式数据类型一致

在这里插入图片描述

  • case后面可以带多个值,使用逗号间隔。比如 case 值1,值2…
  • case后面不需要带break
  • default语句不是必须的,位置也是随意的
  • switch后可以不带表达式,类似IF

在这里插入图片描述

  • 可在switch表达式中直接定义变量,但此时必须加封号

在这里插入图片描述

  • 可在case语句块后增加fallthrough关键字,实现穿透,只穿一层(执行下一层)

在这里插入图片描述

3、for

注意点:for的初始表达式中,不能用var定义变量的形式,要用:=

var sum int = 0
for i := 1 ; i <= 5 ; i++ {sum += i
}

在这里插入图片描述

格式可调整为:

func main(){i := 1 //变量的初始化for i<=5 {//条件表达式。判断条件fmt.Println("你好 Golang")//循环体i++//迭代}
}

死循环:

for {fmt.Println("你好 Golang")
}
for ;; {fmt.Println("你好 Golang")
}

4、for range

有点像Java的foreach,用于遍历数组、切片、字符串、map、通道

for key, val := range coll {...
}

遍历coll,遍历的每个结果,索引值被key接收,值被val接收。

package main
import "fmt"
func main(){//定义一个字符串:var str string = "hello golang你好"//方式1:普通for循环:按照字节进行遍历输出的 (暂时先不使用中文)// for i := 0;i < len(str);i++ {//i:理解为字符串的下标// 	fmt.Printf("%c \n",str[i])// }//方式2:for rangefor i , value := range str {fmt.Printf("索引为:%d,具体的值为:%c \n",i,value)}//对str进行遍历,遍历的每个结果的索引值被i接收,每个结果的具体数值被value接收//遍历对字符进行遍历的
}

在这里插入图片描述

5、break

  • 结束整个整个循环
  • 多层循环嵌套时,结束最近的那一层
  • 可以加标签去精确结束某一层循环,有点像前端的锚点
package main
import "fmt"
func main(){//双重循环:label2:for i := 1; i <= 5; i++ {//label1://如果那个标签没有使用到 的话,那么标签不用加,否则报错:定义未使用for j := 2; j <= 4; j++ {fmt.Printf("i: %v, j: %v \n",i,j)if i == 2 && j == 2 {break label2   //结束指定标签对应的循环}}}fmt.Println("-----ok")
}

在这里插入图片描述

6、continue

  • 结束本轮循环,不是整个循环
package main
import "fmt"
func main(){//功能:输出1-100中被6整除的数://方式1:for i := 1; i <= 100; i++ {if i % 6 == 0 {fmt.Println(i)}}//方式2:for i := 1; i <= 100; i++ {if i % 6 != 0 {continue //结束本次循环,继续下一次循环}fmt.Println(i)}
}
  • 多层循环时,还是只对最近的那层循环生效
  • 可以使用标签去精确操作某一层循环
package main
import "fmt"
func main(){//双重循环:label:for i := 1; i <= 5; i++ {for j := 2; j <= 4; j++ {			if i == 2 && j == 2 {continue label}fmt.Printf("i: %v, j: %v \n",i,j)}}fmt.Println("-----ok")
}

运行:

在这里插入图片描述

7、goto

  • 无条件地转移到程序中指定的行
  • 配合IF使用
package main
import "fmt"
func main(){fmt.Println("hello golang1")fmt.Println("hello golang2")if 1 == 1 {goto label1 //goto一般配合条件结构一起使用}fmt.Println("hello golang3")fmt.Println("hello golang4")fmt.Println("hello golang5")fmt.Println("hello golang6")label1:	//定义标签fmt.Println("hello golang7")fmt.Println("hello golang8")fmt.Println("hello golang9")
}

8、return

  • 结束程序的运行
  • 返回给调用者
package main
import "fmt"
func main(){for i := 1; i <= 100; i++ {fmt.Println(i)if i == 14 {return //结束当前的函数}}fmt.Println("hello golang")
}

相关文章:

【Go】五、流程控制

文章目录 1、if2、switch3、for4、for range5、break6、continue7、goto8、return 1、if 条件表达式左右的()是建议省略的if后面一定要有空格&#xff0c;和条件表达式分隔开来{ }一定不能省略if后面可以并列的加入变量的定义 if count : 20;count < 30 {fmt.Println(&quo…...

数据开发-面试真题。

1. 自我介绍 2.在培训班的学过的项目经历 3.之前的工作经历&#xff0c;以及薪资 4.开始讲之前的项目经历 5.技术面试官开始提问。 kafka中进行数据分层&#xff0c;怎么从kafka中实时查询到相关的数据&#xff0c;一条或几条 6.java中的集合&#xff0c;以及io流 7.给定…...

如何使用免费的ChatGpt3.5

如何使用免费的ChatGpt 最近免费的gpt3.5很多都不怎么行了实在是太给力了尾声 最近免费的gpt3.5很多都不怎么行了 原因是什么呢&#xff1f;因为openai已经取消了免费的5刀赠送&#xff0c;那么这些人手上的免费的sses-key 用完后&#xff0c;就基本上全军覆没了&#xff0c;再…...

Kafka硬核干货

目录 Kafka Kafka Producer Kafka Consumer Consumer Offset Log Manager 如何实现高吞吐、低延迟...

分享几个可以免费使用的GPT网站吧

1. ChatGAI ChatGAI是一个界面简洁的AI平台&#xff0c;提供App和网页版&#xff0c;每日均有免费使用机会。 2. ChatGPT 本网站向大家开放了ChatGPT 3.5和4.0版本的免费体验&#xff0c;特别适合新用户。每天都有免费次数&#xff0c;响应迅速&#xff0c;注册便捷&#xff0…...

MySQL进阶-----前缀索引、单例与联合索引

目录 前言 一、前缀索引 1. 语法 2. 如何选择前缀长度 3. 前缀索引的查询流程 二、单列索引与联合索引 三、索引设计原则 前言 本期是MySQL进阶篇当中索引的最后一期内容&#xff0c;这里我们主要接着上一期继续讲解前缀索引、单例与联合索引。&#xff08;上一期链接&…...

HTTP——Cookie

HTTP——Cookie 什么是Cookie通过Cookie访问网站 我们之前了解了HTTP协议&#xff0c;如果还有小伙伴还不清楚HTTP协议&#xff0c;可以点击这里&#xff1a; https://blog.csdn.net/qq_67693066/article/details/136895597 我们今天来稍微了解一下HTTP里面一个很小的部分&…...

Scala大数据开发

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Scala简述 在此&#xff0c;简要介绍 Scala 的基本信息和情况。 Scala释义 Scala 源自于英语单词scalable&#xff0c;表示可伸缩的、可扩展的含义。 Scala作者 Scala编…...

windows无法使用hadoop报错:系统找不到路径

在windows下安装hadoop-3.1.4,进行环境变量配置后&#xff0c;打开window命令行窗口测试hadoop命令&#xff0c;报错&#xff0c;如图所示&#xff1a; 方案&#xff1a;由于JAVA_HOME路径有空格导致&#xff0c;可修改hadoop下\etc\hadoop\hadoop_env.cmd文档中set JAVA_HOME以…...

从0配置React

在本地安装和配置React项目&#xff0c;您可以使用create-react-app这个官方推荐的脚手架工具。以下是安装React的步骤&#xff0c;包括安装Node.js、使用create-react-app创建React应用&#xff0c;以及启动开发服务器。 下载安装node.js运行以下命令&#xff0c;验证Node.js…...

File和IO流

1. File类常用方法 1.1 获取基本属性 • public String getName() &#xff1a;获取名称 • public String getPath() &#xff1a;获取路径 • public String getAbsolutePath()&#xff1a;获取绝对路径 • public File getAbsoluteFile()&#xff1a;获取绝对路径表示…...

2024系统架构师---解释器架构风格的概念与应用

解释器架构风格是一种软件架构模式&#xff0c;用于构建那些能够读取、解析并执行用户定义的命令或程序代码的系统。这种架构风格的关键在于提供一个运行时环境&#xff0c;它能够理解和执行预定义或用户定义的语言或指令集。通过这种方式&#xff0c;解释器模式能够为特定领域…...

makefile01

什么是makefile Makefile 文件描述了 Linux 系统下 C/C 工程的编译规则&#xff0c;它用来自动化编译 C/C 项目。一旦写编写好 Makefile 文件&#xff0c;只需要一个 make 命令&#xff0c;整个工程就开始自动编译&#xff0c;不再需要手动执行 GCC 命令。一个中大型 C/C 工程…...

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

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

蓝桥杯:全球变暖(python,BFS,DFS)(栈溢出的处理办法)

图论的经典题型&#xff0c;深度优先搜索和广度优先搜索都可以&#xff0c;但是本题推荐使用广度优先搜索&#xff08;类似的题最好都用广度优先搜索&#xff09;&#xff0c;因为使用深度优先搜索会爆栈&#xff08;栈溢出&#xff09;。本篇博客两种方法都进行讲解&#xff0…...

Qt C++ | Qt 元对象系统、信号和槽及事件(第一集)

01 元对象系统 一、元对象系统基本概念 1、Qt 的元对象系统提供的功能有:对象间通信的信号和槽机制、运行时类型信息和动态属性系统等。 2、元对象系统是 Qt 对原有的 C++进行的一些扩展,主要是为实现信号和槽机制而引入的, 信号和槽机制是 Qt 的核心特征。 3、要使用元…...

Python 抽象类

在Python的抽象基类(ABC)中,方法并不是必须全部是抽象方法。抽象基类可以同时包含抽象方法和具体方法。抽象类中可以有抽象方法也可以定义具体方法 具体来说: 抽象方法: 使用abc.abstractmethod装饰器标记的方法是抽象方法。抽象方法没有方法体,只有方法签名。抽象方法必须在具…...

达梦数据库自动备份(全库)+还原(全库) 控制台

一 前提 1.安装达梦数据库DB8(请参照以前文章) 我的数据库安装目录是 /app/dmDB8 2.已创建实例 (请参照上一篇文章) 二 准备测试数据 三 自动备份步骤 1.开启归档模式 开启DM管理工具管理控制台 弹不出来工具的 输入命令 xhost 第一步 将服务器转换为配置状态 右键-&g…...

android AndroidAutoSize 取消第三方库适配问题(两个步骤)

比如第三方库的Activity是&#xff1a;PictureSelectorSupporterActivity、PictureSelectorTransparentActivity、CropImageActivity 1.在自定义Application 的 onCreate 方法设置&#xff1a; Overridepublic void onCreate() {super.onCreate();this.mAppthis;registerActi…...

【Java 多线程】从源码出发,剖析Threadlocal的数据结构

文章目录 exampleset(T value)createMap(t, value);set(ThreadLocal<?> key, Object value)ThreadLocalMap和Thread的关系 全貌 ThreadLocal是个很重要的多线程类&#xff0c;里面数据结构的设计很有意思&#xff0c;很巧妙。但是我们平时使用它的时候常常容易对它的使用…...

Sy6 编辑器vi的应用(+shell脚本3例子)

实验环境&#xff1a; 宿主机为win11&#xff0c;网络&#xff1a;10.255.50.5 6389 WSL2 ubuntu 目标机的OS&#xff1a;Ubuntu 内核、版本如下&#xff1a; linuxpeggy0223:/$ uname -r 5.15.146.1-microsoft-standard-WSL2 linuxpeggy0223:/$ cat /proc/version Linux vers…...

把标注数据导入到知识图谱

文章目录 简介数据导入Doccano标注数据&#xff0c;导入到Neo4j寻求帮助 简介 团队成员使用 Doccano 标注了一些数据&#xff0c;包括 命名实体识别、关系和文本分类 的标注的数据&#xff1b; 工作步骤如下&#xff1a; 首先将标注数据导入到Doccano&#xff0c;查看一下标注…...

【前端基础】什么是类数组对象,类数组对象转换成数组的方法

类数组对象&#xff08;array-like object&#xff09;是指在 JavaScript 中具有类似数组的特征但不是真正的数组的对象。这些对象具有类似数组的特性&#xff0c;例如有一个 length 属性和通过索引访问元素的能力&#xff0c;但它们不具备数组对象的所有方法和特性。 什么是类…...

Python快速入门系列-8(Python数据分析与可视化)

第八章:Python数据分析与可视化 8.1 数据处理与清洗8.1.1 数据加载与查看8.1.2 数据清洗与处理8.1.3 数据转换与整理8.2 数据可视化工具介绍8.2.1 Matplotlib8.2.2 Seaborn8.2.3 Plotly8.3 数据挖掘与机器学习简介8.3.1 Scikit-learn8.3.2 TensorFlow总结在本章中,我们将探讨…...

双非硕转测试之Java学习笔记(一):集合

Java学习-----集合 简单概括单列集合--collectionlist接口&#xff1a;vector类&#xff1a;LinkedList类&#xff1a;set接口&#xff1a;HasSet类&#xff1a;LinkedHashSet类&#xff1a; 双列集合--MapMap接口&#xff1a;HashMap类&#xff1a;HashTable类&#xff1a;Pro…...

zabbix源码安装

目录 一.安装php和nginx客户端环境 二.修改php配置 三.修改nginx配置文件 四.下载并编译zabbix 五.创建zabbix需要的用户及组 六.安装编译需要的依赖 七.配置zabbix文件 八.数据库配置 九.配置zabbix 十.web界面部署 十一.遇到无法创建配置文件 十二.登录zabbix 前…...

计算机视觉之三维重建(5)---双目立体视觉

文章目录 一、平行视图1.1 示意图1.2 平行视图的基础矩阵1.3 平行视图的极几何1.4 平行视图的三角测量 二、图像校正三、对应点问题3.1 相关匹配法3.2 归一化相关匹配法3.3 窗口问题3.4 相关法存在的问题3.5 约束问题 一、平行视图 1.1 示意图 如下图即是一个平行视图。特点&a…...

计算机网络-TCP/IP 网络模型

TCP/IP网络模型各层的详细描述&#xff1a; 应用层&#xff1a;应用层为应用程序提供数据传输的服务&#xff0c;负责各种不同应用之间的协议。主要协议包括&#xff1a; HTTP&#xff1a;超文本传输协议&#xff0c;用于从web服务器传输超文本到本地浏览器的传送协议。FTP&…...

算法训练营第29天|LeetCode 491.递增子序列 46.全排列 47.全排列Ⅱ

LeetCode 491.递增子序列 题目链接&#xff1a; LeetCode 491.递增子序列 解题思路&#xff1a; 用哈希集合进行去重&#xff0c;同一树层不能取重复元素。 代码&#xff1a; class Solution { public:vector<vector<int>>result;vector<int>path;void…...

Ubuntu服务器搭建 - 环境篇

Ubuntu服务器搭建 - 环境篇 基于腾讯云服务器 - Ubuntu 20.04 LTS 一、安装 - MySQL 1.1 概述 MySQL安装方式有三种: 1. 使用Ubuntu 包管理工具 apt安装 2. 使用MySQL官方APT存储库安装 3. 使用MySQL官方二进制发行版安装 1.2 安装 MySQL 使用MySQL官方APT存储库安装 $ wget…...

县门户网站建设方案/自己建个网站要多少钱

this this 是自身的一个对象&#xff0c;代表对象本身&#xff0c;可以理解为&#xff1a;指向对象本身的一个指针。 this 的用法在 java 中大体可以分为 3 种&#xff1a; 普通的直接引用 这种就不用讲了&#xff0c;this 相当于是指向当前对象本身。 形参与成员名字重名&…...

网站建设的概念/关键词查询工具有哪些

目录关键词1&#xff1a;隔离关键词2&#xff1a;限制通过前面的文章&#xff0c;我们可以得出以下几点事实&#xff1a;容器技术的兴起源于 Paas 技术的普及Docker 公司发布的 Docker 项目具有里程碑式的意义Docker 项目通过容器镜像&#xff0c;解决了应用打包这个根本性难题…...

wordpress文章禁止搜索/百度网盘电脑版官网

OpenFeign 概述 Feign是一个声明式的web服务客户端&#xff0c;让编写web服务客户端变得非常容易&#xff0c;只需创建一个接口并在接口上添加Feign的注解即可 为什么要使用OpenFeign 前面在使用Ribbon RestTemplate时&#xff0c;利用RestTemplate对http请求进行了封装处理&…...

搭建网站 网页/营销策划方案模板范文

swift 常用高阶函数swift的高阶函数怎么使用&#xff1f;什么是高阶函数 文章出自我的博客&#xff1a;huhansome的博客 mapvar arr [1, 2, 3] //map函数是有返回值的&#xff0c;想要arr里面的值map过去需要arr重新接收新值 arr.map { (a : Int) -> Int inreturn a * 2 }…...

权威的赣州网站建设/网络精准推广

彬哥哥给了个很不错的网址http://wenda.hiall.com.cn&#xff0c;上去做几道题感觉就是细节呀&#xff0c;各种细节&#xff0c;也许没有真正开发过软件的我不太注意这些细节&#xff0c;但细节决定代码的质量&#xff0c;代码决定软件的性能&#xff0c;就当扫盲好好练练吧。 …...

南京做网站找哪家好/网址提交

前几天&#xff0c;eric已经发表了欧博旗舰RDS1电池数字界面转盘旗舰RDB1电池解码器开箱篇。开箱篇 | 试听欧博旗舰RDS1电池数字界面转盘旗舰RDB1电池解码器&#xff0c;支持roon、Tidal、MQA。本地播放评论篇。开盖照本地播放评论篇 | 试听欧博旗舰RDS1电池数字界面转盘旗舰RD…...