07【保姆级】-GO语言的程序流程控制【if switch for while 】
之前我学过C、Java、Python语言时总结的经验:
- 先建立整体框架,然后再去抠细节。
- 先Know how,然后know why。
- 先做出来,然后再去一点点研究,才会事半功倍。
- 适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。
- 对于GO语言,切记遵守语法格式规则。(例如python语言、例如SpringBoot框架等)
解释:某些知识点,就是很难了解,那么先做出来,然后继续向前学习,可能在某个时间点我们就会恍然大悟。
07【保姆级】-GO语言的程序流程控制【if switch for while 】
- 一、 分支控制(if else )
- 二、分支控制 switch
- 2.1 基本介绍
- 2.2 switch 和if 的比较
- 三、for循环
- 3.1 语法格式
- 四、break和continue跳转控制语句
一、 分支控制(if else )
基本语法:
if 条件表达式 {代码块
}//说明:当条件表达式为true, 则执行{}中的代码。
案例:判断输入的年龄,是否大于18岁。
var age intfmt.Println("请输入你的年龄:")fmt.Scanln(&age)if age > 18 {fmt.Println("你年龄大于18岁啦")} else {fmt.Println("你年龄小于18岁啦")}
Golang支持在if中,直接定义一个变量:
var age intfmt.Println("请输入你的年龄:")fmt.Scanln(&age)if age > 18 {fmt.Println("你年龄大于18岁啦")} else {fmt.Println("你年龄小于18岁啦")}

二、分支控制 switch
2.1 基本介绍
- Switch语句用于基于不同条件执行不同动作,每一个case分支都是唯一的,从上到下逐一测试,知道匹配为止。
- switch的执行的流程是,先执行表达式得到值,然后和case的表达式进行比较,如果相等就匹配到,然后执行对应的case的语句块,然后退出switch控制
- 如果switch的表达式的值都没有和任何case的表达式匹配成功,则执行default的语句。执行后退出switch的控制。最后的default语句不是必须的
- Golang的case后的表达式可以有多个,使用逗号间隔。
- golang中的case语句块不需要写break,因为默认会有,即使在默认情况下当执行case语句块后,就直接退出switch控制结构。
- case/switch后是一个表达式(即:常量值、变量、一个有返回值的函数等都可以的)
- case后的各个表达式的值的数据类型,必须和switch的表达式数据类型一致
- case后面可以带多个表达式,使用逗号间隔。比如case 表达式1,表达式2…
- case后面的表达式如果是常量值(字面量),则要求不能重复
- switch后面可以不带表达式,类似 if else 分支来使用。
- Switch后也可以直接声明、定义一个变量,分号结束(不推荐)
- switch 穿透 fallthrough,如果在case语句块后增加 fallthrough,则会继续执行下一个case,也叫switch穿透。
- Type Swtich:swtich语句还可以被用于type-switch 来判断某个interface 变量中实际指向的变量类型


2.2 switch 和if 的比较
- 如果判断的具体数量不多,而且符合整数、浮点数、字符、字符串这几种类型。建议使用swtich语句,简洁高效
- 其他情况:对区间判断 和结果为bool类型的判断,使用if,if的使用范围更广。
三、for循环
- 将一个循环放在另一个循环体内,就形成了嵌套循环。在外边的 for 称为外层循环在里面的 for循环称为内层循环。【建议一般使用两层,最多不要超过 3 层】
- 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为 jalse时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
- 外层循环次数为 m 次,内层为 n 次,则内层循环体实际上需要执行 m*n 次
3.1 语法格式
for 循环变量初始化;循环条件;循环变量迭代{循环操作(语句)
}
对上面的语法格式说明:
- for循环,四要素
- 循环变量的初始化
- 循环条件
- 循环操作,也就是循环体
- 循环变量迭代。
- 细节:
- 循环条件是返回一个布尔值的表达式
- for循环的第二种使用方式:
for 循环判断条件{
// 循环语句
}
- 循环的第三种方式。
for {
// 循环语句
}
写法等价于 for ; ; {} 。是一个无限循环,通常需要配合 break语句使用。
- golang 提供了 for-range的方式,可以方便遍历字符串和数组。
// 传统方式
var star string = "abcdedfg"
for i :=0; i < len(str); i++ {fmt.printf("%c \n",str[i]) // 使用坐标
}// 使用 for - range方式var str string = "abcdefg"for index, val := range str {fmt.Printf("index = %d,val=%c \n", index, val)}
// 其中“index”获取字符串的下标,然后通过下标获取字符后交给val。进行打印/*index = 0,val=aindex = 1,val=bindex = 2,val=cindex = 3,val=dindex = 4,val=eindex = 5,val=findex = 6,val=g*/// 其实index和val就是定义的变量名for i, v := range str {fmt.Printf("index = %d,val=%c \n", i, v)}
四、break和continue跳转控制语句
两者区别:
- break:跳出循环。
- contunue结束本次循环,继续执行下一次循环。
相关文章:
07【保姆级】-GO语言的程序流程控制【if switch for while 】
之前我学过C、Java、Python语言时总结的经验: 先建立整体框架,然后再去抠细节。先Know how,然后know why。先做出来,然后再去一点点研究,才会事半功倍。适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。对于GO语言&a…...
求2个字符串的最短编辑距离 java 实现
EditStepInfo.java: import lombok.Getter; import lombok.Setter;import java.io.Serializable; import java.util.List;Getter Setter public class EditStepInfo implements Serializable {private String str1;private String str2;// str1和 str2 的最短编辑路…...
单例模式 rust和java的实现
文章目录 单例模式介绍应用实例:优点使用场景 架构图JAVA 实现单例模式的几种实现方式 rust实现 rust代码仓库 单例模式 单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建…...
tqdm学习
from tqdm import tqdmepochs 10 epoch_bar tqdm(range(epochs)) count 0 for _ in epoch_bar:count count1print("count {}".format(count))print(_)每次就是一个epoch...
Zigbee—网络层地址分配机制
🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:孤雏 0:21━━━━━━️💟──────── 4:14 🔄 ◀️ ⏸ ▶️ ☰ 💗关注…...
[Matlab]基于LSTM+NSGA2的风光火力发电策略优化
最近比较忙,好久没分享案例啦,今天简单分享一个滚动时域的多目标优化 一 模型介绍 1 风电 2 光伏 3 火电 4 储能 5 用电需求 等五个对象。 其中风电和光伏还有用电需求,用历史数据LSTM网络,训练一个预测模型;火电根据策…...
智安网络|探索人机交互的未来:自然语言处理的前沿技术
自然语言处理是人工智能领域中研究人类语言和计算机之间交互的一门学科。它涉及了语言的理解、生成、翻译、分类和摘要等多个方面。随着人们对自然语言处理的重视和需求不断增长,成为了热门的研究方向。 首先,我们需要了解自然语言处理的基本概念。自然…...
Could not load library libcudnn_cnn_train.so.8, 解决类似问题的思路与方法
完整报错 Could not load library libcudnn_cnn_train.so.8. Error: /home/ai/anaconda3/envs/ai/bin/../lib/libcudnn_ops_train.so.8: undefined symbol: _ZN5cudnn3ops26JoinInternalPriorityStreamEP12cudnnContexti, version libcudnn_ops_infer.so.8 错误原因 该错误其…...
孙子兵法_00000
第一篇:始计篇 孙子曰:兵者,国之大事,死生之地,存亡之道,不可不察也。 故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将…...
代挂单页网址发布页+加盟代理+APP下载页源码
代挂单页加盟代理网址发布页app下载页HTML单页版本,自行修改源码内文字。自行修改联系方式、登录地址!上传即可使用。源码我已全部打包好,直接上传本站提供的源码,无后台,直接访问即可! 源码下载ÿ…...
计算机视觉驾驶行为识别应用简述
一、什么是计算机视觉识别? 计算机视觉识别是一种基于图像处理和机器学习的人工智能应用技术,可以用于多个场景。常见应用场景包括人脸识别、场景识别、OCR识别以及商品识别等。今天以咱们国产系统豌豆云为例,为大家梳理一下在车辆驾驶行为中…...
asp.net core configuration配置读取
asp.net core 默认注入了configuration配置服务,configuration可以从命令行、环境变量、配置文件读取配置。 这边主要演示从appsettings.json文件读取配置 1.读取单节点配置 { "name":"pxp" }//在控制器注入Iconfigurationprivate IConfigurat…...
windows上 Nexus 批量上传 maven依赖npm依赖
windows上 Nexus 批量上传 maven依赖/npm依赖 前言:windows系统上要有git环境,不然sh文件执行不了 1.批量上传maven依赖 设置脚本,把脚本放在依赖包的根目录执行,脚本名为upload.sh #!/bin/bash# 定义变量 while getopts &quo…...
已解决:Python Error: IndentationError: expected an indented block 问题
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂🦖…...
汽车标定技术(六)--基于模型开发如何生成完整的A2L文件(2)
目录 1. 自定义ASAP2文件 2. asap2userlib.tlc需要修改的部分 3. 标定量观测量地址替换 3.1 由elf文件替换 3.2 由map文件替换 3.3 正则表达式(含asap2post.m修改方法) 4.小结 书接上文汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)-C…...
普华永道于进博会发布全新升级的DSAI投资管理数字化平台
上海,2023年11月9日——今日,在第六届中国国际进口博览会上,全球领先的专业服务机构普华永道推出了全新升级的创新投资管理产品:DSAI投资管理数字化平台。升级后的DSAI投资管理数字化平台具有收益分配自动计算和智能BI看板功能。作…...
ssm+vue的高校学生课堂考勤系统设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。
演示视频: ssmvue的高校学生课堂考勤系统设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转…...
常用hivesql记录
前言 hivesql中很多常用的功能,过段时间没有使用就容易忘记,需要去网上搜索,这里总结一下,省的以后还去去搜,供自己以后参考。 查看分区的行 show rowcount extended table_name;创建二级分区表 set hive.default.…...
C# OpenCvSharp 去除文字中的线条
效果 中间过程效果 项目 代码 using OpenCvSharp; using System; using System.Drawing; using System.Windows.Forms; using static System.Net.Mime.MediaTypeNames;namespace OpenCvSharp_Demo {public partial class frmMain : Form{public frmMain(){InitializeComponent…...
【树的存储结构,孩子链表】
文章目录 树和森林树的存储结构孩子链表 树和森林 森林:是m(m>0)棵互不相交的树的集合。 树的存储结构 1.双亲表示法 实现:定义结构数组存放树的结点,每个结点含两个域。 数据域:存放结点本身信息。 双亲域:指…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...
Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)
目录 🔍 若用递归计算每一项,会发生什么? Horners Rule(霍纳法则) 第一步:我们从最原始的泰勒公式出发 第二步:从形式上重新观察展开式 🌟 第三步:引出霍纳法则&…...
2025.6.9总结(利与弊)
凡事都有两面性。在大厂上班也不例外。今天找开发定位问题,从一个接口人不断溯源到另一个 接口人。有时候,不知道是谁的责任填。将工作内容分的很细,每个人负责其中的一小块。我清楚的意识到,自己就是个可以随时替换的螺丝钉&…...
